Oblivion Desktop发布流程自动化:electron-builder配置与签名实践

Oblivion Desktop发布流程自动化:electron-builder配置与签名实践

【免费下载链接】oblivion-desktop unofficial desktop version of oblivion 【免费下载链接】oblivion-desktop 项目地址: https://gitcode.com/GitHub_Trending/ob/oblivion-desktop

引言

在当今快速迭代的软件开发环境中,自动化发布流程已成为提高效率、减少错误的关键环节。Oblivion Desktop作为一款非官方的桌面版应用,其发布流程的自动化对于确保版本质量和用户体验至关重要。本文将深入探讨Oblivion Desktop使用electron-builder进行发布流程自动化的配置与签名实践,帮助开发者轻松实现应用的打包、签名和分发。

项目概述

Oblivion Desktop是一个非官方的桌面版本应用,项目路径为GitHub_Trending/ob/oblivion-desktop。该项目旨在为用户提供桌面端的Oblivion体验,其发布流程的自动化配置主要依赖于electron-builder工具。

Oblivion Desktop Logo

electron-builder基础配置

electron-builder是一个功能强大的打包工具,能够将Electron应用程序打包为各种平台的可执行文件。在Oblivion Desktop项目中,electron-builder的配置主要集中在package.json文件的"build"部分。

基本信息配置

在package.json中,首先需要设置应用的基本信息,如产品名称、可执行文件名称、应用ID等。这些信息将在打包过程中被electron-builder使用,用于生成正确的安装包和相关元数据。

"build": {
  "productName": "oblivion-desktop",
  "executableName": "oblivion-desktop",
  "appId": "org.desktop.oblivion",
  "artifactName": "oblivion-desktop-${os}-${arch}.${ext}",
  ...
}

文件打包配置

"files"属性指定了需要打包到应用中的文件和目录。在Oblivion Desktop项目中,除了常规的应用代码和依赖外,还需要包含资产文件和二进制文件。

"files": [
  "dist",
  "node_modules",
  "package.json",
  "assets/bin/**"
]

平台特定配置

electron-builder支持为不同平台(如macOS、Windows、Linux)进行特定的打包配置。例如,在Windows平台上,可以配置生成NSIS安装程序;在macOS平台上,可以配置生成DMG镜像等。

签名配置与实践

应用签名是确保应用安全性和可信度的重要步骤。通过签名,用户可以验证应用的来源和完整性,避免安装被篡改的应用程序。

macOS签名与公证

在macOS平台上,应用签名和公证是发布到App Store或分发给用户的必要步骤。Oblivion Desktop项目使用@electron/notarize模块来实现应用的公证。

const { notarize } = require('@electron/notarize');
const { build } = require('../../package.json');

exports.default = async function notarizeMacos(context) {
  const { electronPlatformName, appOutDir } = context;
  if (electronPlatformName !== 'darwin') {
    return;
  }

  if (process.env.CI !== 'true') {
    console.warn('Skipping notarizing step. Packaging is not running in CI');
    return;
  }

  if (!('APPLE_ID' in process.env && 'APPLE_APP_SPECIFIC_PASSWORD' in process.env)) {
    console.warn(
      'Skipping notarizing step. APPLE_ID and APPLE_APP_SPECIFIC_PASSWORD env variables must be set'
    );
    return;
  }

  const appName = context.packager.appInfo.productFilename;

  await notarize({
    appBundleId: build.appId,
    appPath: `${appOutDir}/${appName}.app`,
    appleId: process.env.APPLE_ID,
    appleIdPassword: process.env.APPLE_APP_SPECIFIC_PASSWORD
  });
};

Windows签名

对于Windows平台,应用签名可以使用代码签名证书。虽然在提供的配置中没有直接显示签名相关的代码,但在实际的发布流程中,通常会使用electron-builder的签名功能,通过配置证书路径和密码等信息来完成签名。

打包前钩子脚本

在打包过程中,有时需要在打包前执行一些自定义操作,例如下载必要的二进制文件。Oblivion Desktop项目通过beforePackHook.js脚本实现了这一功能。

const util = require('util');
const exec = util.promisify(require('child_process').exec);

exports.default = async function (context) {
  const archDict = {
    0: 'ia32',
    1: 'x64',
    3: 'arm64'
  };
  // TODO don't force download when packaging on the local platform
  const { stdout, stderr } = await exec(
    `npm exec ts-node script/dlBins.ts force ${context.electronPlatformName} ${archDict[context.arch]}`
  );

  if (stderr) {
    console.error(stderr);
  }
  console.log(stdout);
};

该脚本会根据当前的平台和架构,执行下载二进制文件的命令,确保在打包时包含正确的二进制依赖。

多平台打包配置

Oblivion Desktop项目支持为多个平台和架构生成安装包,以满足不同用户的需求。

Windows平台

在Windows平台上,配置了生成NSIS安装程序和ZIP压缩包,并支持ia32、x64和arm64架构。

"win": {
  "target": [
    {
      "target": "nsis",
      "arch": [
        "x64",
        "arm64",
        "ia32"
      ]
    },
    {
      "target": "zip",
      "arch": [
        "x64",
        "arm64",
        "ia32"
      ]
    }
  ]
}

macOS平台

macOS平台配置了生成DMG镜像和ZIP压缩包,支持arm64和x64架构。

"mac": {
  "target": [
    {
      "target": "dmg",
      "arch": [
        "arm64",
        "x64"
      ]
    },
    {
      "target": "zip",
      "arch": [
        "arm64",
        "x64"
      ]
    }
  ],
  "identity": null
}

Linux平台

Linux平台支持生成AppImage、deb、rpm和tar.xz等多种格式的安装包,同样支持arm64和x64架构。

"linux": {
  "target": [
    {
      "target": "AppImage",
      "arch": [
        "arm64",
        "x64"
      ]
    },
    {
      "target": "deb",
      "arch": [
        "arm64",
        "x64"
      ]
    },
    {
      "target": "rpm",
      "arch": [
        "arm64",
        "x64"
      ]
    },
    {
      "target": "tar.xz",
      "arch": [
        "arm64",
        "x64"
      ]
    }
  ],
  "description": "Unofficial Warp Client",
  "category": "Network",
  "icon": "assets"
}

发布流程总结

Oblivion Desktop的发布流程自动化主要包括以下几个步骤:

  1. 配置electron-builder:在package.json中设置应用的基本信息、文件打包规则、平台特定配置等。
  2. 执行打包前钩子脚本:通过beforePackHook.js下载必要的二进制文件。
  3. 打包应用:使用electron-builder根据配置生成不同平台和架构的安装包。
  4. 签名应用:对生成的安装包进行签名,确保应用的安全性和可信度,如macOS的公证和Windows的代码签名。
  5. 分发应用:将签名后的安装包发布到指定的渠道,供用户下载和安装。

通过这一系列的自动化配置和实践,Oblivion Desktop能够高效、安全地发布新版本,为用户提供更好的体验。同时,开发者也可以将更多的精力放在应用功能的开发和优化上,而无需过多关注繁琐的发布流程。

结语

electron-builder为Electron应用的打包和发布提供了强大的支持,通过合理的配置和自定义脚本,可以实现发布流程的全自动化。Oblivion Desktop项目的实践案例展示了如何利用electron-builder来满足多平台发布需求,并确保应用的安全性。希望本文能够为其他Electron应用的开发者提供有益的参考,帮助他们构建更加高效、可靠的发布流程。

【免费下载链接】oblivion-desktop unofficial desktop version of oblivion 【免费下载链接】oblivion-desktop 项目地址: https://gitcode.com/GitHub_Trending/ob/oblivion-desktop

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值