在electronic-updater中下载期间如何在窗口中显示进度条

时间:2019-03-22 18:49:45

标签: node.js electron electron-builder electron-updater

我正在用电子开发我的应用程序,并且正在使用电子更新程序显示一个窗口,询问用户是否要下载新的应用程序版本。 我试图像这样在下载过程中在窗口中显示进度条。 progress-bar

我尝试使用进度条,但是如果安装了进度条,电子更新程序将停止工作。现在,我只能看到以开发模式进入电子外壳的过程。

autoUpdater.on('download-progress', (progressObj) => {
    let log_message = "Scaricamento aggiornamenti in corso...  \n";
    log_message = log_message +  "Velocita\' scaricamento: " + 
        progressObj.bytesPerSecond;
    log_message = log_message + ' - Scaricati ' + progressObj.percent + '%';
    log_message = log_message + ' (' + progressObj.transferred + "/" + 
        progressObj.total + ')';
    log.log('info', log_message);
})

提前谢谢

1 个答案:

答案 0 :(得分:0)

(我不清楚您要问的是什么,而且我没有足够的声誉来添加评论……所以我会尽力而为)

我假设autoUpdater在主进程中,而不在渲染器中。因此,您需要做的第一件事是将数据从进度更新中获取到正确的渲染器。您可以使用电子的ipcMainipcRenderer模块进行此操作。

在渲染器进程中拥有数据后,需要将其移至进度条。如果您使用的是redux,则可以调用商店的dispatch(),并将downloadProgress动作传递给它。

在使用redux的应用程序中,我在主进程中创建一个DownloadProgress操作,然后通过IPC将其发送到渲染器。我建议您这样做,因为您可能也想通过DownloadCancelledDownloadComplete操作。

如果这没有帮助,请进行以下澄清:

  • 请添加无法解决您的问题的代码-这将有助于更准确地了解您要执行的操作
  • autoUpdate是在主进程中还是在渲染器中运行
  • 您正在使用哪个进度条实现(一个npm包?),以及如何将数据直接发送给它(通过商店?)