【问题标题】:electron auto-update for windowswindows的电子自动更新
【发布时间】:2021-03-17 03:44:44
【问题描述】:

我正在尝试创建一个电子应用程序,它将自动更新来自 github 的新版本。正在尝试为 mac 和 windows 执行此操作。

我已经能够通过关注this tutorial 成功创建并签署一个mac os .dmg 程序。结果是一个电子应用程序,当我在我的 mac 笔记本电脑上运行 npm run deploy 以获得新版本时,它将通过运行以下命令来构建和打包程序:electron-builder build --mac --win --publish always

mac os .dmg 文件按照教程中的说明工作,它检查我的 main.js 文件中的更新,如果发布了新版本,它将提示用户重新启动应用程序。

本教程应该也适用于 Windows,但生成并上传到我的 github 存储库发布选项卡的 windows.exe 似乎不会自动更新。在我已经发布 v1.0.3 之后,我通过运行我的应用程序 windows 便携式 .exe 文件来测试这一点:electron-auto-updater-1.0.2,所以它应该自动更新但永远不会,并且不会在我的电子应用程序窗口控制台中抛出任何错误。

我是否需要以不同的方式为电子签名我的 windows exe?最终,我正在尝试为具有自动更新功能的 Windows 10 创建一个最低限度的电子应用程序。我一直在网上查找并关注各种旧的教程博客文章,我链接的那个似乎是最新的(2019 年),我遵循了 mac os 笔记本电脑上签名过程的每一条说明,但我的代码在 windows 上不起作用:

package.json

{
  "name": "electron-auto-updater",
  "productName": "Electron tutorial app",
  "description": "Application for electron tutorials",
  "version": "1.0.4",
  "main": "main.js",
  "scripts": {
    "start": "electron .",
    "build": "electron-builder build --mac --win --publish never",
    "deploy": "electron-builder build --mac --win --publish always",
    "deploy-win": "electron-builder build --win --publish always",
    "build-win": "electron-builder build --win --publish never"
  },
  "build": {
    "appId": "yourAppId",
    "afterSign": "scripts/notarize.js",
    "mac": {
      "icon": "build/icon.png",
      "hardenedRuntime": true,
      "gatekeeperAssess": false,
      "entitlements": "build/entitlements.mac.plist",
      "entitlementsInherit": "build/entitlements.mac.plist",
      "target": [
        "dmg",
        "zip"
      ]
    },
    "dmg": {
      "sign": false
    },
    "linux": {
      "category": "TODO: fill here the category of your app",
      "icon": "build/icon.png",
      "target": [
        "AppImage",
        "deb"
      ]
    },
    "win": {
      "target": "portable",
      "icon": "build/icon.png"
    }
  },
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "electron": "^11.0.3",
    "electron-builder": "^22.9.1",
    "electron-notarize": "^1.0.0",
    "electron-winstaller": "^4.0.1"
  },
  "dependencies": {
    "dotenv": "^8.2.0",
    "electron-updater": "^4.3.5"
  },
  "repository": {
    "type": "git",
    "url": "https://github.com/MartinBarker/electron-auto-updater.git"
  }
}

ma​​in.js

const { app, BrowserWindow, ipcMain } = require('electron');
const { autoUpdater } = require('electron-updater');
require('dotenv').config();

let mainWindow;

function createWindow () {
  mainWindow = new BrowserWindow({
    width: 800,
    height: 600,
    webPreferences: {
      nodeIntegration: true,
    },
  });
  mainWindow.loadFile('index.html');
  mainWindow.on('closed', function () {
    mainWindow = null;
  });

  mainWindow.once('ready-to-show', () => {
    try{
      autoUpdater.checkForUpdatesAndNotify();
    }catch(err){
      console.log('autoUpdater.checkForUpdatesAndNotify(); err = ', err)
    }
  });
}

app.on('ready', () => {
  createWindow();
});

app.on('window-all-closed', function () {
  if (process.platform !== 'darwin') {
    app.quit();
  }
});

app.on('activate', function () {
  if (mainWindow === null) {
    createWindow();
  }
});

ipcMain.on('app_version', (event) => {
  event.sender.send('app_version', { version: app.getVersion() });
});

ipcMain.on('restart_app', () => {
    autoUpdater.quitAndInstall();
  });

autoUpdater.on('update-available', () => {
    mainWindow.webContents.send('update_available');
    console.log('update avail')
  });
  autoUpdater.on('update-downloaded', () => {
    console.log('update downlaoded')
    mainWindow.webContents.send('update_downloaded');
  });

If I build on command prompt on my wind 10 computer I get this output in ym console: no error messages:

$1.0.4 deploy-win C:\Users\marti\Documents\projects\electron-auto-updater
electron-builder build --win --publish always

electron-builder  version=22.9.1 os=10.0.18363
loaded configuration  file=package.json ("build" field)
writing effective config  file=dist\builder-effective-config.yaml
packaging       platform=win32 arch=x64 electron=11.0.3     appOutDir=dist\win-unpacked
building        target=portable file=dist\Electron tutorial app 1.0.4.exe archs=x64
  s

【问题讨论】:

  • windows需要配置;见docs

标签: node.js windows macos electron auto-update


【解决方案1】:

通过从我的 package.json 文件中删除 "target": "portable", 修复了 windows

【讨论】:

    猜你喜欢
    • 2018-08-08
    • 2022-09-26
    • 1970-01-01
    • 1970-01-01
    • 2019-04-29
    • 2017-12-01
    • 2016-07-24
    • 1970-01-01
    • 2017-03-10
    相关资源
    最近更新 更多