使用 Azure DevOps 构建 Electron 应用程序失败

Building an Electron app fails using Azure DevOps

我正在尝试使用 Azure DevOps 构建 Electron 应用程序。它因以下错误而失败:

Package Electron App for Platform win...
  • electron-builder  version=21.2.0 os=4.15.0-1052-azure
  • artifacts will be published if draft release exists  reason=CI detected
  • loaded configuration  file=/home/vsts/work/1/s/FotoManager/obj/desktop/win/bin/electron-builder.json
  • packaging       platform=win32 arch=x64 electron=5.0.8 appOutDir=/home/vsts/work/1/s/FotoManager/bin/Desktop/win-unpacked
  • downloading     url=https://github.com/electron/electron/releases/download/v5.0.8/electron-v5.0.8-win32-x64.zip size=59 MB parts=4
  • downloaded      url=https://github.com/electron/electron/releases/download/v5.0.8/electron-v5.0.8-win32-x64.zip duration=1.859s
  • downloading     url=https://github.com/electron-userland/electron-builder-binaries/releases/download/winCodeSign-2.5.0/winCodeSign-2.5.0.7z size=5.6 MB parts=1
  • downloaded      url=https://github.com/electron-userland/electron-builder-binaries/releases/download/winCodeSign-2.5.0/winCodeSign-2.5.0.7z duration=1.593s
  ⨯ wine is required, please see https://electron.build/multi-platform-build#linux  
/usr/local/lib/node_modules/electron-builder/node_modules/app-builder-bin/linux/x64/app-builder exited with code ERR_ELECTRON_BUILDER_CANNOT_EXECUTE  stackTrace=
    Error: /usr/local/lib/node_modules/electron-builder/node_modules/app-builder-bin/linux/x64/app-builder exited with code ERR_ELECTRON_BUILDER_CANNOT_EXECUTE
        at ChildProcess.childProcess.once.code (/usr/local/lib/node_modules/electron-builder/node_modules/builder-util/src/util.ts:239:14)
        at Object.onceWrapper (events.js:286:20)
        at ChildProcess.emit (events.js:198:13)
        at maybeClose (internal/child_process.js:982:16)
        at Process.ChildProcess._handle.onexit (internal/child_process.js:259:5)
    From previous event:
        at runCallback (timers.js:705:18)
        at tryOnImmediate (timers.js:676:5)
        at processImmediate (timers.js:658:5)
    From previous event:
        at WinPackager.signApp (/usr/local/lib/node_modules/electron-builder/node_modules/app-builder-lib/src/winPackager.ts:357:27)
        at WinPackager.doPack (/usr/local/lib/node_modules/electron-builder/node_modules/app-builder-lib/src/platformPackager.ts:243:16)
... done

在 Win10 上本地构建没有任何问题。

这是我的管道 YAML:https://github.com/mu88/BlazorFotoManager/blob/master/azure-pipelines.yml

如您所见,我正在按照建议安装 Wine here

有什么解决办法吗?

最后,我通过简单地使用 Windows VM 映像解决了它。

所有 CI 管道都可能发生此错误。我在 GitLab CI 上遇到过它,因为它是在 Linux 机器上构建的。

GitLab CI 中的解决方案是按照 the official docs

中的建议使用图像 electronuserland/builder:wine

Example .gitlab-ci.yml file

我通过在生成 exe 到 运行 shellscript 之前创建一个任务解决了 wine 问题,我在其中执行了在 vm 上安装 wine 的所有步骤 ubuntu