macOS 27 升級說明
一句話結論
如果你曾在 AppPorts 舊版或測試版中同意重簽名,升級 macOS 27 後,微信等應用程式可能無法從 Finder / Dock 開啟。先還原舊方式遷移的容器資料,再恢復原始應用程式或從官方管道重新安裝。不要刪除資料目錄,也不要再次重簽名。 簽名錯誤本身不代表資料已損壞。
修復
在應用程式清單直接點選行內的 「修復」,或右鍵選擇「檢視修復步驟」。不需要先執行終端機命令。本文的新引導對應目前開發版本;較早版本沒有面板時,也能依下面的方法手動處理。開始前連接原本的外接磁碟,完全結束應用程式,並保留資料與備份。
登入時自動重新簽署
目前開發版會在 macOS 27 及以上停用「登入時自動重新簽署」,停止並移除舊登入工作;若尚未完全關閉,可在設定頁重試。
升級系統前,請先更新並開啟一次 AppPorts,讓已安裝的背景工作取得版本保護。僅下載新版而尚未開啟,不會自動更新舊背景工作。
1. 還原舊連結遷移的容器資料
面板找到指向外接磁碟的容器連結時,點「全部還原」;沒有則跳過。手動路徑是「資料目錄」→「應用程式資料」→ 選擇應用程式 → 還原已連結的容器目錄。已使用 APFS 掛載遷移的目錄,不必只為修復簽名而還原。
2. 恢復原始應用程式或從官方管道重新安裝
- 有完整原始應用程式備份: 點「恢復原始簽名」,還原備份中的版本及簽名。真實應用程式在外接磁碟時也可恢復,不必先遷回本機;AppPorts 會檢查目前應用程式與備份是否相符;已更新或內容不同時,需要提供相符的官方原版。
- 只有舊簽名記錄: 選擇同版本官方原版
.app,或從 App Store / 開發者官網重新安裝。只有憑證名稱的記錄無法重建開發者簽名。 - 準備覆蓋安裝外接磁碟上的應用程式: 先點「遷回本機」,避免只覆蓋本機啟動入口。
不要刪除容器資料目錄。 重要資料應另有備份;聊天記錄與登入狀態能否繼續使用,也取決於版本、權限及資料本身。詳見簽名備份與恢復。
3. 重新檢查,並從 Finder / Dock 開啟
點「重新檢查」,確認簽名檢查通過,再從 Finder / Dock 開啟應用程式,確認原有資料可用。「暫時無法檢查簽名」不代表已替換或已修好,應連接磁碟後重試;掃描會保留恢復備份。目前仍能開啟的應用程式可以稍後處理,但這不等於原始簽名已恢復。
4. 可選:繼續遷移資料
修復後,在「應用程式資料」中選擇目錄並點「遷移」。AppPorts 先檢查目的地,再以 APFS 掛載遷移處理容器資料,保留原始簽名。目前需要未加密的 APFS 外接磁碟;也可以換磁碟或讓資料留在本機。首次開啟時若系統詢問可移除卷宗存取權,請允許;之後使用前先連接磁碟。見APFS 準備方法。
誰會受影響
| 項目 | 說明 |
|---|---|
| 觸發條件 | 升級到 macOS 27 |
| 受影響應用程式 | 遷移過 ~/Library/Containers/ 或 ~/Library/Group Containers/ 資料,且執行過 Ad-hoc 重簽名的應用程式;或者手動右鍵重簽名過的沙盒應用程式 |
| 典型表現 | Finder / Dock 按兩下無反應,圖示閃一下就消失,沒有報錯對話框。並非所有重簽名過的應用程式都會這樣:QQ 音樂在同一臺 27 上正常執行 |
| 資料 | 簽名錯誤本身不代表資料損壞;請保留原始資料和備份 |
| 已確認案例 | 微信 4.1.15,macOS 27.0 (26A428) |
原因簡單說:重簽名把應用程式的沙盒身分拆掉了,macOS 27 核對"這個應用程式有沒有資格碰這個容器"時,如果系統裡已經存著這個應用程式原來簽名的授權記錄,新簽名對不上就被拒絕(微信的日誌:Failed to match existing code requirement)。沒有舊記錄的應用程式(如 QQ 音樂)目前能放行,但鑰匙圈登入狀態等遺失的授權同樣找不回來。原理見容器資料、沙盒與簽名身分。
只有備份記錄為原始開發者簽名,而且真實應用程式目前明確為 Ad-hoc,才標記「簽名已替換」。逾時或外接磁碟無法讀取時應重新檢查。本來就採用 Ad-hoc、曾經遷移或本機啟動入口,都不能單獨作為需要重簽名的判斷。
不要做的事
| 做法 | 為什麼沒用 |
|---|---|
| 只把資料還原回本機就當修好了 | 還原只解決"讀不到外接磁碟資料",無法修復簽名。重簽名過的應用程式還原後照樣秒退 |
| 再按一下「重簽名此應用」 | 重簽名就是病因,只會再抹一次授權 |
| 把應用程式加進「完整磁碟取用權限」 | 可能繞過容器驗證,但鑰匙圈授權已丟,登入狀態照樣有問題。只能當暫時措施 |
| 用"終端裡能開啟"當作修好了 | 終端啟動時借用了終端的權限,是假象。以 Finder / Dock 按兩下為準 |
還沒升級:先檢查
優先查看 AppPorts 的「簽名已替換」標記並按修復處理。沒有標記不保證 macOS 27 相容性。下面的輔助腳本只檢查舊備份中仍可存取的路徑;應用程式移動、磁碟離線或啟動入口都可能造成漏報。
進階:選用的技術檢查
BACKUP_DIR="$HOME/Library/Application Support/AppPorts/signature-backups"
for plist in "$BACKUP_DIR"/*.plist; do
[ -f "$plist" ] || continue
original=$(/usr/libexec/PlistBuddy -c "Print :signingIdentity" "$plist" 2>/dev/null)
app=$(/usr/libexec/PlistBuddy -c "Print :originalPath" "$plist" 2>/dev/null)
case "$original" in ""|ad-hoc) continue ;; esac
[ -d "$app" ] || continue
if codesign -dv "$app" 2>&1 | grep -q "Signature=adhoc"; then
printf "%s\n %s\n" "$app" "$original"
fi
done已升級:確認症狀
先從 Finder / Dock 開啟應用程式。失敗且確認簽名已替換時,按修復處理;否則也應檢查版本相容性、權限和外接磁碟。
進階:選用的技術檢查
將範例改成真實應用程式路徑,不要使用本機啟動入口。以下命令只讀取資訊。Ad-hoc 需與原始簽名記錄一起判斷;存取被拒絕的日誌只是線索,不能單獨確認原因。
codesign -dv --verbose=4 "/Applications/WeChat.app" 2>&1 | grep -E "Authority|TeamIdentifier|Signature"
log show --last 1m --style compact 2>/dev/null | grep -i "rejected approval request"AppPorts 1.9.0 做了什麼
以下對應目前開發版本:
- 預設模式以 APFS 掛載遷移處理容器資料,拒絕對沙盒應用程式重簽名。
- 完整備份可恢復原始應用程式;舊記錄需要同版本官方原版。
- 已確認的簽名替換與無法完成的檢查分開顯示,保留恢復資料。
- 經典資料遷移模式預設關閉。更新 AppPorts 不會自動恢復已替換的簽名。
常見疑問
聊天記錄會不會丟?
簽名錯誤本身不代表聊天記錄損壞。保留容器目錄、外接資料和備份,不要使用會清除資料的解除安裝工具。修復後仍需確認資料存取;部分登入權限可能需要重新建立。
我還原了資料還是打不開?
還原路徑不會恢復開發者簽名。請由完整備份恢復或從官方管道重新安裝,再檢查。簽名正常仍無法開啟時,繼續排查版本和權限。
只有微信會這樣嗎?
不一定。既有測試顯示各應用程式表現不同,提醒代表需要檢查的風險,不是所有應用程式都會失敗。
是 AppPorts 把資料弄壞了嗎?
已觀察到的啟動故障與舊方式重簽名有關,並非資料損壞的證據。排查其他問題時請保留原始資料。預設 APFS 容器遷移會保留應用程式簽名。
