天天看点

在Window下打包Electron的linux包在Window下打包Electron的linux包

在Window下打包Electron的linux包

写这份文档主要是记录一下在Window系统下打linux的electron包的一些坑以及方法。

首先,第一次接触的时候,看electron官网中写道可以构建多平台的包,理所当然的以为可以在一个平台下打不同平台的包。于是乎尝试了一下:

在Window下打包Electron的linux包在Window下打包Electron的linux包

报错如下,多方查证度娘,得到的结果是,本来可以。但是由于该服务在去年就挂了之后window环境下就无法打linux的包。好嘛,难道我一定要去liunx下重新搭个环境吗? 其实不然。

查找过程和解决办法:

首先我使用的electron版本为

electron-12.0.8

以及

electron-builder

打包工具

我们可以查到 electron-builder 官网文档 中多平台构建的说明,其第一句话就说到:

在Window下打包Electron的linux包在Window下打包Electron的linux包
不要期望您可以在一个平台上为所有平台构建应用程序。

下面还有一句

在Window下打包Electron的linux包在Window下打包Electron的linux包

**免费的公共 Electron 构建服务 用于在 Windows 上构建适用于 Linux 的 Electron 应用程序。在 macOS/Linux 上,您可以在本地为 Windows 构建 Electron 应用程序,除了 Windows Store 的 Appx(将来(随时提交问题)electron-build-service 将支持 Appx 目标)。

**

对,这就是上面提到的已经挂掉了的免费打包成linux的服务。

而,在文档的末尾有提到过,可以使用

Docker

来构建Linux包。于是乎我行动了。

操作步骤:

1.安装

Docker

地址点这

刚装完最新版的 docker ,启动时出现以下提示1:

在Window下打包Electron的linux包在Window下打包Electron的linux包

首先在命令行中输入

systeminfo

检查验证硬件兼容性,然后检查 Hyper-V 要求部分,验证Windows中的硬件兼容性。如果所有列出的Hyper-V要求的值都为Yes,则系统可以运行Hyper-V下,如下图:

在Window下打包Electron的linux包在Window下打包Electron的linux包

同样需要四项均为“是”才符合运行Hyper-V虚拟机的要求。

之后进入 bios 开启:

注:不同的主板BIOS设置项不同,但大同小异。

在Window下打包Electron的linux包在Window下打包Electron的linux包

进入CPU Configuration设置界面,在底部可以看到 Intel Virtualization Technology 设置项。如图:

在Window下打包Electron的linux包在Window下打包Electron的linux包

把它设置为Enabled,这样就开启了CPU的虚拟化支持功能。最后保存退出BIOS设置。

之后也注意如下设置也要全部开启:

在Window下打包Electron的linux包在Window下打包Electron的linux包

到此解决这个虚拟化没开启的功能。正常打开Docker

2.使用以下控制台命令下载electronuserland/builder Docker 镜像:

docker pull electronuserland/builder

在Window下打包Electron的linux包在Window下打包Electron的linux包

3.从 Electron 项目的根文件夹(例如C:\MyApp),键入以下命令行命令以运行容器并将 Electron 项目的根文件夹映射到 /project 虚拟路径:

docker run --rm -ti -v C:\MyApp\:/project -w /project electronuserland/builder

4.在容器内部,输入以下命令来重新安装 Electron 项目的 Npm 依赖包,这一步很重要。因为有些解析的npm依赖包会根据不同环境下安装不同的依赖,就比如node-sass包

Linux 可再发行包:

cd /project
npm i
npm run build
           

具体运行打包的命令根据项目中的package.json中的配置命令而变

如:

在Window下打包Electron的linux包在Window下打包Electron的linux包

其中打包的后缀

-l

--arm64

均为electron-builder的CLI打包命令 具体可查官网解析:

Commands:
  electron-builder build                    Build                      [default]
  electron-builder install-app-deps         Install app deps
  electron-builder node-gyp-rebuild         Rebuild own native code
  electron-builder create-self-signed-cert  Create self-signed code signing cert
                                            for Windows apps
  electron-builder start                    Run application in a development
                                            mode using electron-webpack

Building:
  --mac, -m, -o, --macos   Build for macOS, accepts target list (see
                           https://goo.gl/5uHuzj).                       [array]
  --linux, -l              Build for Linux, accepts target list (see
                           https://goo.gl/4vwQad)                        [array]
  --win, -w, --windows     Build for Windows, accepts target list (see
                           https://goo.gl/jYsTEJ)                        [array]
  --x64                    Build for x64                               [boolean]
  --ia32                   Build for ia32                              [boolean]
  --armv7l                 Build for armv7l                            [boolean]
  --arm64                  Build for arm64                             [boolean]
  --dir                    Build unpacked dir. Useful to test.         [boolean]
  --prepackaged, --pd      The path to prepackaged app (to pack in a
                           distributable format)
  --projectDir, --project  The path to project directory. Defaults to current
                           working directory.
  --config, -c             The path to an electron-builder config. Defaults to
                           `electron-builder.yml` (or `json`, or `json5`), see
                           https://goo.gl/YFRJOM

Publishing:
  --publish, -p  Publish artifacts (to GitHub Releases), see
                 https://goo.gl/tSFycD
                [choices: "onTag", "onTagOrDraft", "always", "never", undefined]

Other:
  --help     Show help                                                 [boolean]
  --version  Show version number                                       [boolean]
           

再此过程中,可能会出现要求配置

homepage

的错误。官网这里中也有提到打包linux包时必须要配置,否则报错

在Window下打包Electron的linux包在Window下打包Electron的linux包

如果一切顺利:会在你当前的项目指定打包目录下出现对应包(deb、rpm、AppImage或您在当前项目package.json文件中配置的任何内容):

在Window下打包Electron的linux包在Window下打包Electron的linux包

可以看到我们配置的deb的linux包已经成功打包

  1. https://www.jianshu.com/p/d9d80aa9a513 作者:littleyu ↩︎