更新日誌
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 等通用 TLD 詞彙,避免誤匹配系統容器目錄導致掃描變慢。
- 工具目錄接回檢測更完整:本地工具目錄缺失但外部存儲規範位置仍有受管目錄時,會顯示「待接回」;切換外部存儲會自動刷新工具目錄狀態。
- 本地化與無障礙完善:應用/數據目錄/自訂目錄狀態、排序與篩選標籤、設置開關和狀態徽章會更穩定地跟隨當前語言,並提供更明確的輔助功能標籤。
- 應用體積改為會話級緩存,減少刷新後重新顯示「計算中」或體積丟失的情況(#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 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 實時監控文件系統變化
