Rilmazafone :一款可视化 DMG 编辑器,拖拽排版一键生成

macOS 用户大概都有这个体验------下载一个软件,双击 DMG 挂载,弹出来的窗口里图标排得整整齐齐,背景是一张精心设计的图片,左下角还有一行小字"拖拽到 Applications 文件夹"。窗口好看,用户体验也好。但这份好看的背面,是开发者的一脸苦相。

DMG 是 macOS 上分发软件的标准格式,挂载之后就是一个 Finder 窗口。窗口里的图标摆在什么位置、窗口尺寸多大、背景图是什么,这些参数都存在一个叫 .DS_Store 的二进制文件里。苹果没有公开这个格式的文档,开发者想要控制布局,长期以来也就只有一条路------用 hdiutil 命令行工具创建磁盘映像,手动挂载,打开 Finder 用 AppleScript 操控图标位置,然后合上、压缩、签名。这套流程写进自动化脚本倒也不算太难,只是调试起来极为痛苦;AppleScript 往 Finder 里塞图标的行为在各个 macOS 版本之间并不一致,改个系统版本脚本就废了。

Rilmazafone 是一个原生的 macOS 应用,做的事情很直白------提供可视化的编辑界面,让开发者在画布上拖拽排列图标、设置背景、调整效果,然后一键生成 DMG。项目用 Swift 写成,不依赖任何第三方框架,只在 macOS 15 及以上系统上运行,Xcode 16 即可编译,2026 年 2 月发布了 1.0 版本。

编辑器里的操作跟设计软件差不多。背景支持图片、渐变和纯色三种填充方式,还可以叠加模糊、暗角、辉光等视觉效果;模糊甚至支持可变遮罩,能做出线性或径向的局部虚化。图标背景用毛玻璃面板,带阴影和混合模式,Finder 里常见的那个半透明底板就是这么来的。文字和 SF Symbol 也可以作为图层合成到背景中,省得在图片编辑软件里先做好再贴进来。项目还内置了智能对齐参考线,图标会自动吸附到画面中心和三分线位置,对有布局洁癖的人很友好。

生成 DMG 走七步,估算映像大小,创建可写映像,挂载,复制文件进去,渲染合成背景并写入 .DS_Store,设置卷标图标,最后卸载、压缩、可选签名。压缩格式支持 LZFSE、zlib、bzip2、lzma 四种,文件系统可选 APFS 或 HFS+,兼容性方面的需求基本都覆盖了。整个构建流程以后台任务运行,不阻塞 UI,每一步都可以撤销和重做。

技术层面有几个地方值得一说。前面提到 .DS_Store 是二进制格式,没有公开文档,Rilmazafone 自己实现了一个完整的写入器,用 Buddy Allocator 和 B-Tree 结构来组织数据,纯 Swift 写成。同样自己实现的还有 ICNS 图标格式的解析器和 Alias Record 构建器------前者用来读取应用的图标文件并合成卷标图标,后者用来创建经典 Alias Manager 的二进制记录。这些底层格式的解析和生成不依赖任何外部库,看得出作者对 macOS 内部结构下过很深的功夫。这在开源项目里并不多见,多数开发者遇到这类无文档的二进制格式,宁可绕远路也不愿自己逆向。

项目还提供了一个无头命令行模式,适合 CI/CD 场景。用 init 命令可以生成一个模板目录,build 命令从模板直接输出 DMG,不需要打开任何窗口。模板本身是一个 .dmgtemplate 目录包,里面有一个 document.json 配置文件和若干资源文件,结构清晰,纳入版本管理也很方便。

有一个细节需要注意:项目里的 BackdropBlurView 用了 CABackdropLayer 和 CAFilter 这两个 Core Animation 的私有 API,用来实现编辑器里的实时背景模糊预览。这意味着 Rilmazafone 没法直接上架 Mac App Store,私有 API 在未来的 macOS 版本里也可能随时失效。不过话说回来,本地开发工具上不上架 App Store,多半也无所谓。

归根结底,Rilmazafone 解决的是一件小而烦人的事情。做 macOS 应用的人多半经历过 DMG 排版的折磨,这个工具把那个折磨收进了图形界面里,让开发者把精力花在产品本身。

你觉得你的安装包够好看吗?欢迎在评论区聊聊你排版 DMG 的血泪史。

https://github.com/kageroumado/rilmazafone

相关推荐
Java陈序员32 分钟前
轻量运维面板!一款现代化的服务器控制面板工具!
运维·服务器·python·react.js·github
冬奇Lab2 小时前
一天一个开源项目(第214篇):AstronRPA —— 科大讯飞开源的企业级 RPA + AI Agent 自动化平台
人工智能·开源·资讯
u1301303 小时前
GitHub 热榜项目:日榜(2026-09-10)
github
用户2136863783524 小时前
给 DeepSeek Harness 写了个「技能熔炉」:任何来源的 SKILL.md 一条命令装上
github
七牛开发者5 小时前
告别反复调参,一个 Skill 让 AI 掌握论文图的视觉语法:以 DeepSeek V4.1 Flash 论文图为例
github·agent·deepseek
DolphinScheduler社区5 小时前
Apache DolphinScheduler 8 月报:权限安全加固,调度补火上线,性能与稳定性持续提升
大数据·安全·开源·apache·任务调度·海豚调度
T型码农要学习5 小时前
开源项目11|Stable Diffusion WebUI:本地自建AI绘图,无限免费出图,彻底告别AI绘画会员次数限制
开源·ai绘画
简创AIGC陶先生5 小时前
【直播切片工作台】第11章:剪辑项目模型 VideoProject
github
小弥儿5 小时前
GitHub今日热榜 | 2026-09-02:i-have-adhd 登顶
学习·开源
MicrosoftReactor5 小时前
技术速递|如何在不牺牲任务质量的前提下,让 AI 编码更具成本效益
人工智能·ai·github·copilot