Skip to content

更新日志 ​

v1.9.0(开发中) ​

重要变更 ​

  • 容器数据默认使用挂载迁移:Containers 与 Group Containers 下的目录默认迁移到未加密 APFS 外置盘的独立数据卷,再挂载到原目录,保留应用签名。首次打开应用时需允许访问可移动宗卷。见挂载迁移。
  • 默认拒绝重签名沙盒应用:需要旧方式时,必须手动开启经典模式,并针对当前真实应用确认风险。macOS 27 上被重签名的应用可能无法打开,处理办法见 macOS 27 升级说明。
  • 修复「恢复原始签名」:重签前完整备份原应用,在工作副本验证后安全替换;恢复原始签名和授权无需开发者私钥。旧记录可选择同版本官方原版补救,更新过的应用和损坏的备份不会被强行覆盖。
  • 签名检测与修复引导:结合原始签名记录和真实应用当前的签名识别替换,检查失败单独显示为待检查。点击应用行内「修复」,先还原旧符号链接迁移的容器数据,再按备份情况恢复原始应用或官方重装;有完整备份时不要求先迁回本机。普通扫描保留恢复材料。
  • 经典数据迁移模式:默认关闭,开启前需确认风险,设置卡片可直接查看完整说明。外置盘不是 APFS 时,可以将容器数据留在本机;macOS 27 上仍推荐保留原始签名的挂载迁移。
  • macOS 27 及以上停用开机自动重签名:关闭设置,停止并移除旧登录任务,未完成时可在设置中重试。升级系统前请先更新并打开一次 AppPorts,为已经安装的脚本加入版本保护;只下载新版不会更新旧任务。较早系统保留已有设置。
  • 容器目录的「整理」「接回」「链接详情」在非经典模式下禁用,避免重建符号链接。

改进 ​

  • 首次使用引导与准备检查:检查完全磁盘访问、App 管理权限和存储,可直接前往系统设置;完成引导后记住进度,之后可在设置中重新检查。
  • 数据目录树与行内操作:按类型展示父子目录,放大图标和控件,并在文件夹内加入类型标识。常用操作可直接点击;修复选择后强行居中、父子目录大小不一致和按钮对齐问题。
  • 备份更新与清理重试:官方更新通过校验后建立新恢复点,归档旧签名备份;还原完成但清理失败时单独记录,重试不重复复制数据,也可仅移除清理记录并保留副本。
  • 确认弹窗和其他修复:长说明可滚动,取消与 Esc 行为一致,修复操作后弹窗未关闭的问题;日志大小正确显示 100 MB;从本地链接发起还原时定位外置应用本体,避免误报同名文件冲突。
  • 文档与项目支持:同步八种语言的迁移、修复与导航说明;关于窗口和菜单补充赞助者、许可证和隐私政策入口。
  • 点击「迁移」先检查,再按情况引导:检查存储连接、格式、加密状态及可用空间;选择或更换外部存储后,继续检查当前目录。可迁移时说明空间、授权和外置盘依赖,条件不满足时提供保留现状、选择其他位置和查看准备方法的选项。
  • 数据卷不再出现在 Finder 里:新建的卷不自动挂到 /Volumes,挂载时带 nobrowse;早期版本挂上的卷会在下次启动或插盘时原地隐藏,不需要卸载。
  • 加密的 APFS 盘暂不支持挂载迁移:新建的数据卷不会继承原卷的密码,AppPorts 会停下说明,而不是悄悄建一个未加密的卷。
  • 迁移和还原前检查剩余空间:外置盘或本机空间不够时,在建卷或复制之前就停下。
  • 还原更安全:卸载后只删除空的挂载点,不再递归删除;暂存目录改为隐藏名称;最后一步没完成时,外置卷和记录保持不变,并告诉你本机副本在哪。
  • 只动自己的卷:挂载、卸载、还原前核对挂载点上的卷身份;拿不到与登录代理共用的锁时不开始操作;迁移记录文件读不出来时不会被当成空记录覆盖。
  • 登录代理路径自动校准:每次启动 AppPorts 都会检查登录代理指向的程序路径,移动或更新 AppPorts 后自动更新;从 DMG 或「下载」文件夹直接运行(App Translocation 临时路径)时,阻止新的挂载迁移并提示先放进「应用程序」。
  • 挂载迁移在 macOS 12 等要求管理员权限的系统上会弹系统密码框重试。
  • 登录和连接外置盘后尝试自动接回容器卷,后台任务与 AppPorts 协调操作。挂载完成时间取决于磁盘上线和系统授权,不能保证早于所有登录应用;需要管理员授权的旧系统应打开 AppPorts 完成挂载。
  • 登录代理不再排在登录项后面:代理改用 KeepAlive(仅失败时重启)声明自己「需要运行」,并去掉 ProcessType: Background。登录后一段时间用户域处于 on-demand-only 模式,旧定义会被 launchd 压后约 20 秒才启动,而登录项里的应用 3 秒就起来了。
  • 卷被系统抢先自动挂载时会自动重挂:diskutil mount -mountPoint 在卷已被系统抢先挂到 /Volumes 时不会报错,而是忽略挂载点参数、照样打印 mounted 并返回 0(2026-09-21、09-23 各出过一次:命令成功、挂载点是空的,微信随后读到空目录)。现在每次挂载后都会校验卷是否真的落在目标路径上,没落到位就把它从 /Volumes 卸下来重挂,最多 3 轮。
  • 挂载链路省掉开机时最贵的一次 diskutil 查询:开机/插盘时系统会先把卷挂到 /Volumes/<卷名>,代理现在用 statfs + 卷根标记直接认出来(微秒级),不再调用那次实测要 9 秒的 diskutil info。真机实测:一轮从「查挂载点」到「挂好」只剩 unmount + mount 两条命令,约 1 秒。
  • 外置盘迟迟没出现时,登录代理不再只试一遍:代理在进程内监听 /Volumes,等下一次真实变化再重试(实测卷出现到挂载完成约 1 秒),完全没有事件时每 20 秒兜底复查一次,总窗口 180 秒;等卷期间不占用与 AppPorts 之间的跨进程锁。
  • 登录代理的空跑不再刷日志:WatchPaths 在 launchd 里是按 FSEvents 路径前缀匹配的,外置盘上任何一次写入都会叫醒代理,而绝大多数时候无事可做。一轮空跑现在只写 3 行,逐条详单只在真的挂载、卷离线或失败时才写。
  • 挂载路径上的 diskutil 调用减半:每卷从 4 次查询减到 2 次 —— 「卷在不在线」和「现在挂在哪」合并成同一次 diskutil info。开机时系统繁忙,一次查询要一秒上下,这一步直接省掉几秒。
  • 卷不再被 Spotlight 索引:建卷后在卷根写入 .metadata_never_index,并清掉系统已经建好的 .Spotlight-V100(两个微信卷实测共 110 MB)。在这之前迁移过的卷会在下次挂载时自动补上标记;标记跟着卷走,还原时不会被带回本机目录。
  • 修复应用名或 Bundle ID 中的 CN、mac、desktop 等通用词误匹配其他应用容器的问题,包括 Trae CN 列出 WPS、Termius 列出 QQ 音乐的数据。
  • 修复容器路径以 /private/var 形式出现时子目录未被扫描的问题。

v1.8.0 ​

新功能 ​

  • 新增自定义本地扫描目录:「Mac 本地应用」标题栏新增「+」按钮,可添加额外的本地应用扫描目录。适用于 JetBrains Toolbox、Steam 等将应用安装在非 /Applications 目录的工具。添加的目录会持久保存,并自动监控文件变化(#48)。
  • 新增 Stub Portal 版本自动同步:外置硬盘上的应用通过 App Store 更新后,本地 Stub Portal 的版本信息会自动同步更新,并刷新 macOS Launch Services 缓存,「打开方式」菜单不再显示旧版本号(#50)。
  • 新增工具目录识别:支持 Gradle(~/.gradle)、Android 开发数据(~/.android)和 Flutter/Dart Pub 缓存(~/.pub-cache)(#49)。
  • 新增目录迁移:可在「目录迁移」标签中添加任意用户文件夹,将大型项目、模型、素材库或工具缓存迁移到外部存储,并支持接回和还原(#54)。
  • 新增受保护应用迁移预警:迁移 App Store 应用或 root 归属应用前,会提示这类应用可能因权限不足无法自动删除或替换,并建议先通过 Finder 手动迁移后再创建链接(#55)。

改进 ​

  • 应用扫描性能优化:每个应用的 Info.plist 读取次数从 7 次降低到 1 次(通过内存缓存),整体扫描速度显著提升。
  • 扫描超时保护:codesign 子进程新增 10 秒超时,避免大型应用签名检查卡死导致扫描挂起。
  • 目录体积计算安全上限:递归计算应用体积时新增 50 万文件数量上限,防止 Electron 等超大应用包无限遍历。
  • 扫描过程可追踪:扫描循环新增逐应用 TRACE 日志,便于定位扫描卡在哪个应用。
  • 数据目录扫描精准匹配:修复 bundle ID 后缀提取逻辑,过滤 app、com、org 等通用词汇,避免误匹配系统容器目录导致扫描变慢。
  • 工具目录接回检测更完整:本地工具目录缺失但外部存储规范位置仍有受管目录时,会显示「待接回」;切换外部存储会自动刷新工具目录状态。
  • 本地化与无障碍完善:应用/数据目录/自定义目录状态、排序与筛选标签、设置开关和状态徽章会更稳定地跟随当前语言,并提供更明确的辅助功能标签。
  • 应用体积改为会话级缓存,减少刷新后重新显示「计算中」或体积丢失的情况(#55)。
  • 数据目录迁移回滚更安全:创建链接前先把本地源目录改名为隐藏安全备份;创建链接或清理备份失败时会尽量保留本地备份和外部副本,避免两端数据同时丢失(#54)。

修复 ​

  • 修复 Trae 等应用扫描极慢的问题 — bundle ID 中的通用后缀 app 导致 ~/Library/Containers/ 下大量不相关目录被误扫描。
  • 修复外置硬盘应用通过 App Store 更新后,本地 Stub Portal 版本信息不更新、「打开方式」菜单显示旧版本的问题。
  • 修复点击刷新按钮不会触发 Stub Portal 版本同步的问题。
  • 修复数据目录接回或规范化时可能把外部普通文件当作目录处理的问题;现在会拒绝普通文件并保留原文件。
  • 修复多行弹窗正文在部分语言下回退显示中文的问题,并补全俄语界面翻译;Stub Portal 的「外部存储未连接」系统弹窗也会按系统语言显示(#55)。

v1.7.0 ​

新功能 ​

  • 新增「待迁出」状态:当本地真实应用版本高于外部存储中的同名应用时,AppPorts 会标记为「待迁出」,提示可将本地新版迁移到外部存储并替换旧副本。
  • 新增数据迁移重签名确认:迁移应用容器内数据前,可选择是否在迁移完成后自动对关联应用执行 Ad-hoc 重签名,以降低容器数据迁移后应用无法识别数据、提示异常或启动异常的风险(#44)。

界面改进 ​

  • 顶部工具栏重排:应用页和数据目录页切换按钮改为更紧凑的图标 + 文本样式,减少空间占用。
  • 数据目录页操作栏优化:「工具目录 / 应用数据」切换、迁移后重签名开关、恢复原始签名按钮和刷新按钮统一放入顶部工具栏。
  • 应用状态徽章新增「待迁出」,方便识别本地版本高于外部旧副本、可以迁出替换的应用。
  • 数据目录迁移重签名确认弹窗完成本地化,标题、正文和按钮会跟随当前语言显示。

改进 ​

  • 应用迁移安全策略增强:外部目标已存在时,仅在目标被识别为 AppPorts 管理的旧入口、旧迁移残留,或当前应用处于「待迁出」状态时,才会自动清理并继续迁移。
  • 数据目录恢复校验增强:不再使用目录大小接近作为自动恢复依据,必须完整匹配 AppPorts metadata 后才会自动接回或恢复。
  • 应用数据扫描更稳定:快速切换应用时,旧扫描任务结果不会覆盖当前选中应用的数据目录列表。
  • 管理员命令和 AppleScript 转义增强:路径包含引号、反斜杠、空格或中文时,Finder 删除和管理员修复权限命令会更安全地处理。
  • 本地化完善:修复切换语言后部分帮助内容、提示弹窗和数据迁移确认内容仍显示中文或翻译不完整的问题,并补齐所有支持语言的相关翻译(#43)。

修复 ​

  • 修复数据目录迁移可能将外部真实目录误判为可恢复目标的问题。
  • 修复应用迁移时可能错误删除外部同名真实应用的问题。
  • 修复外部旧 AppPorts portal / 旧迁移残留无法被稳定识别和清理的问题。
  • 修复路径包含特殊字符时 AppleScript 或管理员命令可能构造错误的问题。
  • 修复应用数据迁移流程中,后台迁移或迁移后重签名可能读取到已切换应用的问题。
  • 修复「待迁出」状态未在应用列表中显示状态徽章的问题。

v1.6.2 ​

  • 新增:开机自动重签名功能。每次用户登录时,自动对签名已失效的已迁移应用执行 Ad-hoc 重签名,无需手动操作。默认开启,可在设置中关闭。
  • 改进:Stub Portal 改用原生 Mach-O 二进制启动器替代旧版 bash 脚本,修复通过 Finder 双击关联文档无法打开外部应用的问题(#42)。
  • 改进:优化关于页布局,内容区域改为可滚动布局,解决窗口尺寸不足时内容被截断的问题。
  • 修复:原生 Stub Portal 被误识别为普通本地应用的问题。
  • 修复:迁回本地时无法正确清理原生 Stub Portal 的问题。
  • 修复:链接回本地时应用壳被当作完整应用处理的逻辑漏洞。
  • 修复:AutoResignInstaller 安装失败时静默成功的问题。

v1.6.1 ​

  • 修复:数据目录迁移后的自动重签名现在会正确签名外部真实应用,而非本地壳(Stub Portal)。
  • 修复:重签名和签名恢复操作现在会正确解析已链接应用的真实路径。
  • 修复:已链接应用的「已重签名」状态检测现在能正确识别外部真实应用的签名状态。
  • 优化:日志输出增加结构化错误码和关联路径信息。

v1.6.0 ​

  • 迁移后的应用不再显示快捷方式箭头角标。
  • 自动更新应用迁移后,不再因更新破坏外部副本。
  • 新增应用签名管理功能,解决迁移后出现「已损坏」提示的问题。
  • 外部存储拔出后,应用列表会以红色状态提示「孤立链接」。
  • macOS 15.1+ 用户可直接将 App Store 应用安装到外部存储。
  • 数据目录迁移更安全:防止误迁移系统目录,中断后可自动恢复。
  • 扫描和大小计算更快,列表不再反复跳动。
  • 复制文件到外部存储更稳定,不再因中断报错。
  • 应用状态标签重新设计,信息更丰富,点击可查看详情。
  • 应用列表刷新后不再丢失选中状态,数据目录支持树形展示。
  • 优化界面细节,包括搜索、排序、分组卡片和图标加载等。
  • 新增火星文语言选项。
  • 更新自动化测试。

v1.5.5 ​

  • 支持 macOS 12 及以上的操作系统
  • 新增火星文语言

v1.5.0 ​

  • 新增 macOS 15.1+ App Store 应用外置安装支持
  • 新增自动重签名功能(数据目录迁移后自动执行)
  • 新增 LocalizationAuditTests 本地化审计测试
  • 改进 Stub Portal 的 Info.plist 生成逻辑
  • 修复部分应用迁移后 Launchpad 图标丢失的问题

v1.4.0 ​

  • 新增数据目录树形视图
  • 新增工具目录识别(30+ 种开发工具)
  • 新增诊断包导出功能
  • 改进自更新检测(Chrome、Edge 等自定义更新器)
  • 修复迁移中断后的自动恢复机制

v1.3.0 ​

  • 新增数据目录迁移功能
  • 新增代码签名管理(备份/恢复原始签名)
  • 新增 Sparkle 和 Electron 应用自动检测
  • 改进锁定迁移保护(chflags uchg)
  • 修复 Finder 中角标显示问题

v1.2.0 ​

  • 新增 Stub Portal 迁移策略(替代 Deep Contents Wrapper)
  • 新增 iOS 应用迁移支持(Mac 版 iOS 应用)
  • 改进批量迁移性能
  • 修复部分应用还原后无法启动的问题

v1.1.0 ​

  • 新增多语言支持(20+ 种语言)
  • 新增应用套件目录迁移(如 Microsoft Office)
  • 改进外部存储离线检测
  • 修复 Deep Contents Wrapper 策略的符号链接穿透问题

v1.0.0 ​

  • 首个正式版本
  • 支持应用迁移至外部存储(Deep Contents Wrapper / Whole App Symlink)
  • 支持应用还原和链接管理
  • 支持 FolderMonitor 实时监控文件系统变化
最近更新