现象
打开 OneAgent-darwin-arm64.dmg 后,窗口里只有一个孤立的 OneAgent 图标。没有 Applications 文件夹的软链接,没有箭头,没有背景说明。用户不知道该把它放到哪里,最自然的反应是直接双击运行。
macOS 用户熟悉的样子是左边 app 图标、右边 Applications 软链接、中间一个箭头。
原因
build-artifacts.yml:155 的打包步骤只把 .app 塞进一个压缩 dmg:
hdiutil create \
-volname OneAgent \
-srcfolder "bin/OneAgent.app" \
-ov \
-format UDZO \
"bin/OneAgent-darwin-${{ matrix.arch.ota }}.dmg"
-srcfolder 指向 app 本身,所以卷里就只有这一个条目。
为什么值得修
除了安装体验,它还有一个连带后果:从 dmg 直接运行会导致自更新静默失败(#143)。macOS 对这种情况做 App Translocation,把 app 挂到只读卷上,updater 的备份步骤失败,应用退出后不会自动回来。引导越明确,用户从 dmg 里直接运行的概率越低。
也就是说这不只是观感问题,它是 #143 的上游成因之一。
修复方向
在 hdiutil create 之前准备一个 staging 目录,而不是直接指向 .app:
mkdir -p dmg-root
cp -R "bin/OneAgent.app" dmg-root/
ln -s /Applications dmg-root/Applications
hdiutil create -volname OneAgent -srcfolder dmg-root -ov -format UDZO ...
软链接是最小可用版本,只用内置工具,无新增依赖,就能让用户看到该往哪儿拖。
进一步的图标位置、窗口尺寸和背景图需要写 .DS_Store,通常靠 create-dmg 这类工具,或者用 AppleScript 操作 Finder。后者在 CI 的无头环境里不可靠。如果引入 create-dmg,要同步 NOTICE——docs/distribution-compliance-policy.md 把第三方归属列为发布前置条件。
建议先做软链接版本:改动小、无依赖、覆盖了绝大部分收益。背景图和图标布局可以之后单独做。
验证要点
- 两个架构的 dmg 都要检查(
amd64、arm64)
- 软链接必须是
/Applications 的绝对路径,相对路径在别人机器上解析不到
- 确认加入软链接后 dmg 体积没有明显变化(软链接本身不占空间)
SHA256SUMS 会随之改变,属预期
相关
现象
打开
OneAgent-darwin-arm64.dmg后,窗口里只有一个孤立的 OneAgent 图标。没有Applications文件夹的软链接,没有箭头,没有背景说明。用户不知道该把它放到哪里,最自然的反应是直接双击运行。macOS 用户熟悉的样子是左边 app 图标、右边
Applications软链接、中间一个箭头。原因
build-artifacts.yml:155的打包步骤只把.app塞进一个压缩 dmg:-srcfolder指向 app 本身,所以卷里就只有这一个条目。为什么值得修
除了安装体验,它还有一个连带后果:从 dmg 直接运行会导致自更新静默失败(#143)。macOS 对这种情况做 App Translocation,把 app 挂到只读卷上,updater 的备份步骤失败,应用退出后不会自动回来。引导越明确,用户从 dmg 里直接运行的概率越低。
也就是说这不只是观感问题,它是 #143 的上游成因之一。
修复方向
在
hdiutil create之前准备一个 staging 目录,而不是直接指向.app:mkdir -p dmg-root cp -R "bin/OneAgent.app" dmg-root/ ln -s /Applications dmg-root/Applications hdiutil create -volname OneAgent -srcfolder dmg-root -ov -format UDZO ...软链接是最小可用版本,只用内置工具,无新增依赖,就能让用户看到该往哪儿拖。
进一步的图标位置、窗口尺寸和背景图需要写
.DS_Store,通常靠create-dmg这类工具,或者用 AppleScript 操作 Finder。后者在 CI 的无头环境里不可靠。如果引入create-dmg,要同步NOTICE——docs/distribution-compliance-policy.md把第三方归属列为发布前置条件。建议先做软链接版本:改动小、无依赖、覆盖了绝大部分收益。背景图和图标布局可以之后单独做。
验证要点
amd64、arm64)/Applications的绝对路径,相对路径在别人机器上解析不到SHA256SUMS会随之改变,属预期相关