Logo Vincent
返回文章列表

Electron-开发实践:DMG安装包定制

Electron
Electron-开发实践:DMG安装包定制

【前言】

dmg文件是mac端常见的安装包格式,

前面几篇文章已经使用electron开发并打包好一个应用了,

本文主要讲下定制dmg安装包,

前面几篇文章:

一篇文章学会Electron

Electron-开发实践:本地数据库SQLite

Electron-开发实践:使用Monorepo管理Electron项目

Electron-开发实践:Mac打包

Electron-开发实践:注册苹果开发者账号

Electron-开发实践:Mac应用包签名和公证

【应用图标定制】

之前一篇文章讲过如何制作mac应用icns图标,

接上文的代码分支: https://github.com/uikoo9/dishi-monorepo/tree/mac-sign

对应的应用图标效果如下,

会发现一个问题,比普通的mac应用图标大一圈,

原因也比较简单,找一个正常的mac应用图标对比一下,

可以看到问题的原因是两者留的边距不一样,

正确的编剧是1024px尺寸留96px边距。

按这个比例修改icon后的效果如下,

这里推荐一个简单好用的在线画图网站,

https://www.suxieban.com/index.html#

【dmg预期效果】

有点跑偏了,接着来讲dmg安装包的定制,

找一个软件看下dmg预期的效果,

比如微信的mac版,

可以看到dmg的定制包括几部分

1.dmg文件本身的图标,这个保持默认即可

2.dmg双击后挂载到电脑后的图标,如上图右侧图标

3.双击dmg挂载后的效果,如上图下面的部分

这里看下目前应用的效果如下,

可以看到

1.双击dmg文件,挂载后的图标是默认electron的图标

2.双击挂载文件后的页面有点简单和丑

【定制dmg挂载后的图标】

使用qiao-electron-cli,

https://qiao-electron-cli.vincentqiao.com/#/  

安装

npm i -D qiao-electron-cli

配置文件

主要是icon属性,

这里的icon在生成app应用包和dmg时都会使用到。

// pkg
const pkg = require("../dist/package.json");

// const
const arch = process.arch;
const platform = process.platform;
const version = pkg.version;
const iconPath = `pack/icon/icon${platform === "darwin" ? ".icns" : ".ico"}`;

// qiao-electron config
module.exports = {
  overwrite: true,
  asar: false,
  dir: "dist",
  out: "out",

  arch: arch,
  platform: platform,

  name: "dishi",
  icon: iconPath,
  appVersion: version,
  appCopyright: "Copyright © 2023 insistime.com版权所有",
};

脚本

先执行packmac,生成mac应用,

在执行packdmg,生成dmg安装包。

    "packmac": "qelectron pm ./pack/qiao-electron.config.js",
    "packdmg": "qelectron pd ./pack/qiao-electron.config.js",

效果

定制后效果如下

【定制安装界面】

目前的安装界面如下,

其实分3块

1.背景图,其中包括了那个黑色的箭头

2.应用icon,其实就是应用包,双击也可以启动

3.Applications的快捷方式,这个一般不用改

修改背景图

先随便找一个背景图,

然后修改上面配置文件,

添加一个dmgBackground的属性,

{
  // dmg配置项-背景图
  dmgBackground: 'pack/icon/bg.png',
}

再次生成dmg后的效果,

可以看到背景图已经替换了。

修改icon位置

这里假设要讲两个icon向上移动一些,

可以在上面的配置项添加如下配置,

其中type为file的代表左侧的应用图标位置,

type为link的为右侧的Applications的位置,

{
  // dmg配置项-内容位置
  dmgContents: [
    { x: 80, y: 60, type: 'file' },
    { x: 260, y: 60, type: 'link' },
  ],
}

修改配置再次打包后的效果,

可以看到两个icon已经挪到了页面上边。

修改界面尺寸

当自定义了背景图后,

对应的需要修改下界面的尺寸,

在配置文件中加下面的配置,

{
  // dmg配置项-窗口大小
  dmgWindowSize: {
    width: 350,
    height: 140,
  },
}

【最终效果】

最终效果如下

1.定制了dmg挂载后的图标

2.定制了安装界面的背景图

3.定制了安装界面的尺寸

【qiao-electron-cli】

封装了一个npm包,功能包括

1.打包mac应用包

2.打包mac-dmg包

https://qiao-electron-cli.vincentqiao.com/#/packdmg

定制dmg包,只需新增一个配置文件如下

/**
 * dmg options
 */
module.exports = {
  // 定制窗口
  window: {
    size: {
      width: 500,
      height: 200,
    },
    position: {
      x: 500,
      y: 500,
    },
  },

  // 定制背景图
  background: "pack/icon/bg.png",

  // 内容位置
  contents: [
    { x: 160, y: 90, type: "file" },
    { x: 360, y: 90, type: "link" },
  ],
};

【总结】

1.定制dmg挂载后的图标

2.定制dmg安装界面-背景图

3.定制dmg安装界面-图标位置

4.定制dmg安装界面-窗口大小

5.qiao-electron-cli, https://qiao-electron-cli.vincentqiao.com/#/

6.本文对应代码库: https://github.com/uikoo9/dishi-monorepo/tree/custom-dmg

7.本文对应应用(Mac M1): https://static-insistime.vincentqiao.com/21_dishi/dmg/dishi-2.1.1-arm64.dmg

8.本文对应应用(Mac Intel): https://static-insistime.vincentqiao.com/21_dishi/dmg/dishi-2.1.1-x64.dmg

相关推荐

Electron-开发实践:注册苹果开发者账号

【前言】 当使用electron开发完一个mac应用后, 如果想正常在mac电脑上使用, 还需要对你的应用进行签名和公证, 而签名和公证都需要一个苹果开发者账号, 这个过程中有一些坑,记录一下。 【注册】 注册地址: https://developer.apple.com/cn/programs/e

Electron-开发实践:clipboard剪切板

【前言】 Electron提供获取和写入系统剪切板的操作, 详见:https://www.electronjs.org/docs/latest/api/clipboard 【进程】 clipboard支持主进程使用,支持没有开启sandbox的渲染进程使用 【系统】 大部分clipboard的api

Electron-开发实践:crash上报及解析

【前言】 electron开发实践中,crash的上报不可避免, electron中可以通过crashReporter来上报crash, https://www.electronjs.org/docs/latest/api/crashreporter , 而处理crash使用的是crashpad,有

Electron-开发实践:包体积精简

【前言】 前面几篇文章讲了从开发electron应用到mac打包, 相关文章: 一篇文章学会Electron Electron开发实践:本地数据库SQLite Electron开发实践:使用Monorepo管理Electron项目 Electron开发实践:Mac打包 Electron开发实践:注册

Electron-开发实践:制作icns图标

【省流】 封装了一个mac上将png转为icns的应用, 欢迎大家使用: https://electronicns.com/ 【前言】 将Electron应用打包为Mac应用包的时候, 这里以electronpackager打包为例, 默认打包运行后的应用图标是这样, 【icns】 按electro

Electron-开发实践:本地日志

【前言】 使用electron开发好本地应用后, 本地日志记录必不可少, 这样可以通过日志获取用户操作信息以及定位bug等, 本地日志与实时性的埋点上报稍微有不同, 本地日志量更大,信息更全,且不是所有信息都时候上报。 【与nodejs本地日志的异同】 electron写本地日志和nodejs写本地

Electron-开发实践:定制Mac菜单

【前言】 前面几篇文章讲了从开发electron应用到mac打包, 相关文章: 一篇文章学会Electron Electron开发实践:本地数据库SQLite Electron开发实践:使用Monorepo管理Electron项目 Electron开发实践:Mac打包 Electron开发实践:注册

Electron-开发实践:Mac应用包签名和公证

【前言】 一篇文章学会Electron Electron开发实践:本地数据库SQLite Electron开发实践:使用Monorepo管理Electron项目 当你通过上面这些文章使用Electron开发好一个桌面应用, Electron开发实践:Mac打包 并通过这个文章在本地打包好了mac的应

Electron-开发实践:Mac打包

【前言】 当本地开发好一个 electron 应用后, 最想做的事情就是打包然后分享出去。 如何用 monorepo 管理一个 electron 项目, 可以看这里: Electron开发实践:使用Monorepo管理Electron项目 【构建】 接上一篇,打包是在 packages/dishie

Electron-开发实践:使用Monorepo管理Electron项目

【前言】 本文讲如何用 monorepo 来管理一个 electron 项目 代码地址: https://github.com/uikoo9/dishimonorepo/tree/electronmonorepo 【初始化】 首先需要初始化一个 monorepo 前端项目, 具体步骤可以看这里: 初

Electron-开发实践:注册快捷键

【前言】 本文介绍一下electron应用中如何注册快捷键 【主进程】 主进程注册快捷键比较简单,需要注意的是在app ready后使用, 常见键盘映射: https://www.electronjs.org/docs/latest/api/accelerator 另外在推出app时需要将所有注册的

Electron-开发实践:几种更新方式

【前言】 Electron开发桌面APP后, 接着涉及一个问题就是如何更新后续的版本, 本文介绍几种更新的方式。 【Electron架构】 用Electron开发的桌面APP, 其实包含几个部分: 1\. Electron本身的环境 2\. 主进程,主进程中又分为Nodejs部分,和非Nodejs部

Electron-开发实践:创建Window

【前言】 Electron入门就需要创建一个window, window是用来展示ui的, window是在渲染进程。 【创建window】 新建一个前端项目, package.json内容如下, 可以看到安装了Electron的开发依赖, 即执行过下面的命令, 且有一个start命令用来本地启动E

一篇文章学会Electron

【前言】 javascript语言的强大生命力,为前端开发拓展了很多业务 网页端业务:基于js,html,css开发网页相关业务 服务端业务:基于nodejs开发服务端业务 桌面端业务:基于chromium和nodejs开发桌面业务 移动端业务:基于webview开发移动端业务 【electron简

Electron-开发实践:本地数据库SQLite

【前言】 本地存取数据的一些常见的手段:Cookie,LocalStorage,IndexedDB,SQLite等, 这里做下简单的对比 Cookie 存储大小:4k 设置有效期:可以 服务端获取:可以 特点:简单数据存取 LocalStorage 存储大小:5M 设置有效期:不行 服务端获取:不行

© 2026 vincentqiao.com . 保留所有权利。