electron打包可选择安装位置,可自动更新

news/2024/6/25 8:14:43

Electron打包调参软件(windows版)

----------------------------------可选安装位置,可自动更新,手动更新

一:引包:electron,electron-builder,electron-updater**

npm i electron --save-dev
npm i electron-builder --save-dev
npm i electron-updater --save
注:每个包都要放在相应的位置;

Package.json配置:

1.字段:”build”

参数:

{"publish": [{"provider": "generic","url": "http://localhost:8899/"   //存放软件版本的地址}],"directories": {"output": "release",      //打包后文件所在位置"app": "./"    //开始位置},"win": {    //windows下安装软件配置参数"target": ["nsis",  //打包为nsis安装文件"zip"   //打包为安装文件zip]},"nsis": {   //nsis配置参数"oneClick": false,    //可单击打开"allowToChangeInstallationDirectory": true,    //允许用户选择安装位置"perMachine": true}
};

2.字段:”script”

参数:

{"dist": "electron-builder"
}

3.字段:”version”

参数:

1.0.0   //保存版本信息,通过该字段完成更新功能(必须字段)

二:打包:npm run dist

图片描述

等待打包,打包完成之后生成的文件会放在output字段设置的位置;
图片描述

这是打包完成后生成的文件,其中latest.yml是electron-builder自动生成的版本管理文件, 该文件保存有版本信息;
图片描述
箭头指向的文件为可安装软件,即打包后的目标文件;

版本文件:

图片描述

可以看到,现在打包的版本为2.0.0,想要改变版本只要更改package.json的version字段,重新打包即可;

点击该文件可进行安装:
图片描述

三:更新

确认已经安装了electron-updater

1.需要在electron主进程中引入electron-updater;

const autoUpdater = require("electron-updater").autoUpdater; //引入 autoUpdater

2.以下代码需要在完成创建BrowserWindow后执行;

autoUpdater.setFeedURL('http://localhost:8899/'); //设置检测更新地址(参数为 软件所在位置)

3.autoUpdater.checkForUpdates() //检测是否有新版本,如果有新版本则自动下载;

4.autoUpdater.on('update-downloaded', function () { //下载完成后执行 quitAndInstall

autoUpdater.quitAndInstall();  //关闭软件并安装新版本

});

图片描述

5.安装程序后,每次打开都会执行上述代码,每次都会检测是否有新版本;

6.最后一步,打包一个新版本的软件,把exe文件和latest.yml一起放在autoUpdater.setFeedURL()设置的路径下;

打开软件后检测到有新版本时就会自动下载安装:

图片描述

以上为软件自动更新,若要软件手动更新还需要electron主进程和渲染进程之间的通讯,通过用户操作触发更新检测,下载更新事件;

以下是autoUpdater手动更新时可能用到的方法和事件;

事件列表

autoUpdater 对象会触发以下的事件:事件:'error'返回:error Error当更新发生错误的时候触发。事件:'checking-for-update'当开始检查更新的时候触发。事件:'update-available'当发现一个可用更新的时候触发,更新包下载会自动开始。事件:'update-not-available'当没有可用更新的时候触发。事件:'update-downloaded'返回:event EventreleaseNotes String - 新版本更新公告releaseName String - 新的版本号releaseDate Date - 新版本发布的日期updateURL String - 更新地址在更新下载完成的时候触发。在 Windows 上只有 releaseName 是有效的。

方法列表

    autoUpdater 对象有以下的方法:autoUpdater.setFeedURL(url)url String设置检查更新的 url,并且初始化自动更新。这个 url 一旦设置就无法更改。autoUpdater.checkForUpdates()向服务端查询现在是否有可用的更新。在调用这个方法之前,必须要先调用 setFeedURL。autoUpdater.quitAndInstall()在下载完成后,重启当前的应用并且安装更新。这个方法应该仅在 update-downloaded 事件触发后被调用。

http://lihuaxi.xjx100.cn/news/238094.html

相关文章

1 密码学的发展历程

想知道更多区块链技术知识,请百度【链客区块链技术问答社区】 链客,有问必答!1密码学的历史悠久,古时候主要应用于军事机密的传送,如“口令”,“暗号”等。在1970年之前,密码学的应用范畴大部分…

nginx 配置文件详解

vim /usr/local/nginx/conf/nginx.conf //nginx的配置文件 nginx.conf由多个块组成,最外面的块是main,main包含events和http,http包含upstream和多个server,server又包含多个location: main&…

如何学习大数据?

想要都进入大数据行业的第一步,是先搞清楚大数据究竟有哪些就业方向。 大数据就业岗位 随着大数据技术在企业界如火如荼的实践,企业对组建大数据团队的迫切程度也也来越高,对与大数据相关高端人才的需求也越来越紧迫,但企业对大数…

r语言 编辑 d3.js_d3.js的语言介绍

r语言 编辑 d3.jsby Matt Oxley由马特奥克斯利(Matt Oxley) d3.js的语言介绍 (A linguistic introduction to d3.js) 如何从一个试探者变成一个自信的用户 (How to go from a tentative to a confident user) d3.js is a fantastic library — but I can honestly tell you th…

(转)关于数据库主键和外键(终于弄懂啦)

一、什么是主键、外键: 关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键 比如 学生表(学号,姓名,性别,班级) 其中每个学生的学号是唯…

nginx源码编译、负载均衡及模块的扩展

1、nginx源码编译 实验环境: iptables和selinux关闭 redhat6.5 nginx:test1: 172.25.1.11 [roottest1 ~]# ls nginx-1.14.0.tar.gz [roottest1 ~]# tar zxf nginx-1.14.0.tar.gz [roottest1 ~]# useradd -s /sbin/nologin nginx [roottest1 ~]# i…

python 字符编码问题

字符编码 一、字符编码的演进 ASCIIGB2312 GBK1.0 GB18030Unicode编码:国际标准字符集,它将世界各种语言的每个字符定义一个唯一的编码,以满足跨语言、跨平台的文本信息转换。Unicode(统一码、万国码)规定所有的…

我是“真正的”软件工程师吗?

by Sun-Li Beatteay通过孙丽贝蒂 我是“真正的”软件工程师吗? (Am I a “real” Software Engineer yet?) Am I a “real” Software Engineer yet?我是“真正的”软件工程师吗? This question has haunted me for years. And it seems I’m not al…