解决 Mac 上使用 Electron Updater 更新 App 不成功的问题!!!

文章目录

      • [1. 现象](#1. 现象)
      • [2. 分析并如何解决](#2. 分析并如何解决)
      • [3. 后续](#3. 后续)

1. 现象

在Mac电脑上,使用Electron Updater对程序进行更新,但是一直不成功,也不报错。具体表现是这样的:当前我的程序版本是3.11版本,点击更新之后,也下载了,但是更新之后还是3.11,也就是意味着更新不成功。

对于具体问题具体分析,这里我先贴一下我的更新代码:

javascript 复制代码
function checkForUpdates() {
  
    // 配置安装包远端服务器
    autoUpdater.setFeedURL("update_url");

    // 下面是自动更新的整个生命周期所发生的事件 
  	// ------------start------------------
    autoUpdater.on('error', (e, message) => {
        sendUpdateMessage('error', message);
    });
  
    autoUpdater.on('checking-for-update', (e, message) => {
        sendUpdateMessage('checking-for-update', message);
    });

    autoUpdater.on('update-available', (e, message) => {
        sendUpdateMessage('update-available', message);
    });

    autoUpdater.on('update-not-available', (e, message) => {
        sendUpdateMessage('update-not-available', message);
    });

    // 更新下载进度事件
    autoUpdater.on('download-progress', (progressObj) => {
        sendUpdateMessage('downloadProgress', progressObj);
    });

    // 更新下载完成事件
    autoUpdater.on('update-downloaded', (event, releaseNotes, releaseName, releaseDate, updateUrl, quitAndUpdate) => {

        sendUpdateMessage('isUpdateNow');

        ipcMain.on('updateNow', (e, arg) => {
        
            //app退出并安装
            autoUpdater.quitAndInstall()
        });
    });
  
    // ------------start------------------

    //执行自动更新检查
    autoUpdater.checkForUpdates();

    //自定义Logger,查看问题所在
    autoUpdater.logger = {

        info(message) {
            builder += "info : " + message + "\n";

        },

        warn(message) {
            builder += "warn : " + message + "\n";

        },

        error(message) {
            builder += "error : " + message + "\n";
        }
    };

2. 分析并如何解决

在查阅了相关的资料就会发现,使用 electron 所打包的app,其实会存在各种日志,我们只需要查看日志,并按照日志,哪里出错就修改哪里即可。

日志的路径在哪里呢?首先你需要确定一下你的AppId,至于这个AppId,是需要你在package.json中配置的:

知道了这个AppId之后,就就可以查看以下目录:

/Users/user_name/Library/Caches/appId_name.Shiplit/ShipIt_stderr.log

看到的就是这种:

查看之后,就可以确定问题所在了。

ps:

我这边的问题是什么呢?主要是存在一个文件,它只是可读的权限,没有可写和可操作的权限。因此可以在终端,对这个文件进行

​ sudo chmod 777 target_file

然后重新打包,重试即可完成安装。

3. 后续

如果后续存在什么问题,可以根据这个log日志进行分析并逐步解决。如果你存在什么问题的话,可以加我v javainstalling,我们一起解决。

相关推荐
不好听6131 小时前
从一行 JSX 到屏幕像素:前端开发者必须懂的浏览器渲染管线
前端
恒拓高科WorkPlus1 小时前
企业级内网即时通讯建设模型:BeeWorks内网IM四层架构
前端
前端小李子2 小时前
前端环境变量裸奔?我用 EnvShield 给它穿了件防弹衣
前端
youtootech2 小时前
HarmonyOS《柚兔学伴》项目实战25-我的页面、Web 嵌入与项目总结
前端·华为·harmonyos
小林ixn2 小时前
从零到一理解 React 父子组件通信:手写一个 Todo 应用带你彻底搞懂单向数据流
前端·javascript·react.js
a4493153623 小时前
iPhone Face ID 故障的分层诊断——原深感系统与主板加密配对机制
macos·ios·电脑·cocoa·iphone
白玉cfc3 小时前
【iOS】内存五大分区
macos·ios·cocoa
醇氧4 小时前
CountDownLatch / CyclicBarrier / Semaphore 面试高频问答清单
前端·面试·职场和发展
qetfw5 小时前
MXU:Tauri 2 + React 的 MaaFramework 跨平台 GUI 源码
前端·python·react.js·前端框架·开源项目·效率工具