已经打包拿到客户那的 Electron 应用程序 , 如果有 BUG 需要更新时该怎麽办呢 ?
一般的做法 , 请客户解安装之前的版本 , 并手动安装最新的版本 ,
如果这个应用程序有 10 个版本 , 那客户可能会安装到很烦 (至少本鲁会很烦)
今天讨论一下 , Electron 应用程序的更新那回事 , 以利明天讨论 自动化更新
在 Day 6 利用 electron-builder 打包应用程序时 ,
我们有提到在 Windows 平台上可以打包成 NSIS 应用与 Portal 应用两种类型
类型 | 功能特点 |
---|---|
Portal | 绿色档案 , 启动 exe 即可使用 |
NSIS | 安装档 , 安装後才能使用 |
下方解说一下 , 此 2 种应用在手动更新时需要执行哪些步骤 ?
如果你是 Portal 版的程序 , 只要下载新的 exe , 并覆盖掉旧的应用程序 , 就算完成更新了 !
当你用 electron-builder 生成一个 windows 安装档时 , 那个安装档就是 NSIS 版本
使用 electron-builder 产出的 NSIS 安装档 , 他具体的安装步骤如下
因此如果你要更新应用程序 , 你只要拿到新版的 NSIS 安装档并执行它 , 安装完成後你就可以享用更新後的应用程序了 !
下图展示拿不同版本的安装档 , 安装会有什麽样的过程
如果想自己尝试安装看看 , 下方提供 3 个 NSIS 安装档 , 让邦友玩玩看
类型 | 手动更新方式 |
---|---|
Portal | 下载新执行档案 , 关闭并删除旧执行档案 => 更新完成 |
NSIS | 下载新安装档 , 安装後重开应用程序 => 更新完成 |
对於 NSIS 程序更新的流程 , 我个人抓破头脑都没想到原来这麽简单就可以处理
本鲁是观察 electron-updater 的 NsisUpdater.doInstall 区块
才知道原来更新 NSIS 应用程序 = 执行新的安装档 ( ̄  ̄|||)
如果邦友觉得 NsisUpdater.doInstall 内的程序码太杂 , 下方提供本鲁调整後的简化版
// 下方为简化版的 doInstall 函式
const doInstall = (exe = 'installer_path', args = '["--updated"]') => {
return new Promise((resolve, reject) => {
const process = spawn(exe, args, {
detached: true, // 让执行绪与 NodeJS 脱钩
stdio: "ignore",
})
process.on("error", error => reject(error))
process.unref()
if (process.pid) resolve(true);
})
}
今年小弟第一次参加 `铁人赛` , 如文章有误 , 请各位前辈提出指正 , 感谢 <(_ _)>
<<: 前端工程学习日记第18天-Emmet简易教学 - 快速上手包
>>: [Golang]同步工具-sync包的原子操作(下)-心智图总结
Rust将错误分成两大类 不可复原的(unrecoverable) 可复原的(recoverable...
第一天主要想表达以下内容: 一.我是谁? 其实我只是一个普通的大学生,我的科系不全然是资工,但也有涉...
credit: https://medium.com/@brilvio/how-i-impleme...
HttpHead操作是只会回传Http Header部分资讯的api请求 所以不会返回函数回传的主体...
大家有看过以前乡下那种烧柴的大灶吗? 图片截自爆废公社 记得以前小时候,阿公阿嬷家有这种烧柴的大灶,...