# 安全更新每一款 Mac App

> 檢查 App Store、官網、Homebrew、Electron 與 macOS 更新，先確認安裝來源和備份，再選擇對應的更新方式。

Published: 2026-07-17 | Updated: 2026-09-05

Mac 應用程式可能來自 App Store、開發者官網、Homebrew 或企業管理系統。不同來源有不同的簽名、回退和自動更新規則。更新前先確認安裝管道，避免遺失授權，或讓同一應用程式出現兩個分別受管理的複本。

| 安裝來源 | 權威更新入口 | 不要隨意替換成 |
|---|---|---|
| Mac App Store | App Store 的更新 | 覆蓋商店管理副本的廠商下載套件 |
| 開發者網站 | App 內更新器或廠商下載頁 | 未明確移轉就改用 App Store 或 Homebrew |
| Homebrew formula 或 cask | `brew outdated` 與 `brew upgrade`，部分 cask 使用 App 自行更新 | 未確認 cask 設定就混用更新方式 |
| 企業管理 | 組織的管理入口 | 本機管理員繞過方式 |

## App Store 應用程式

App Store 只更新透過商店安裝的應用程式。打開 App Store，在側邊欄選擇「更新」。自動應用更新位於 **App Store > 設定**，與 macOS 的「軟體更新」分開。Apple 的 [App Store 更新說明](https://support.apple.com/guide/app-store/fir9b01adda3/mac)列出了這兩個入口。

安裝了第三方命令列工具 `mas` 時，可以查看它辨識出的商店應用程式：

```
mas list
```

應用程式沒有出現在結果中，不足以證明它並非來自 App Store。收據、帳號權限和工具限制都可能影響辨識。

## 從開發者網站下載的應用程式

官網直裝應用程式可能使用 Sparkle、Electron 更新程式、自建服務，也可能只提供下載頁。許多應用程式會在選單中提供「檢查更新」。有些只在執行時檢查，有些會安裝登入項目或背景輔助程式。具體行為要看應用程式自己的更新設定。

## Homebrew 應用程式

先查看過期項目，再升級指定套件或全部項目：

```
brew outdated
brew upgrade wget
```

把 `wget` 換成 `brew outdated` 回傳的 formula 或 cask 名稱。不帶名稱執行 `brew upgrade` 會升級所有過期項目。

重新整理套件中繼資料和升級軟體是兩件事，`brew upgrade` 才會執行這裡的套件升級。部分 cask 中的圖形應用程式也有自己的更新程式。根據 [Homebrew 常見問題](https://docs.brew.sh/FAQ#how-do-i-update-my-local-packages)，Homebrew 能比較一部分 cask 的應用程式版本，標記為 `version :latest` 或內容難以判斷的 cask 可能會被略過。重要服務和開發工具鏈升級前，先查看 `brew info` 與不相容變更。

## 更新 macOS 本身

系統更新使用獨立管道：

```
softwareupdate -l
```

也可以打開 **系統設定 > 一般 > 軟體更新**。macOS 更新不會替你更新所有第三方應用程式。安裝前先備份，並確認驅動程式、虛擬化軟體、音訊工具和其他系統級軟體相容。Apple 的 [macOS 更新說明](https://support.apple.com/108382)也建議先備份。

## 安全地更新，而不只是盡快更新

- 確認近期備份可以還原，並為關鍵工具保留安裝套件或封存
- 閱讀版本說明，關注相容性、資料庫遷移和最低系統版本
- 確認官網下載來自原廠，應用程式已有程式碼簽名或公證
- 先更新少量非關鍵應用程式，檢查啟動、文件、外掛和背景服務後再繼續
- 除非準備遷移管理權，否則保持原來的安裝管道

回退可靠、相容紀錄穩定的應用程式適合自動更新。正式環境工具鏈、外掛宿主、驅動程式和維護時段很窄的電腦，更適合分批手動更新。

## 為什麼 macOS 沒有一個能更新所有應用程式的按鈕

App Store 依靠 Apple 收據管理軟體。Sparkle 使用開發者發布的 appcast，設定正確時會同時校驗 EdDSA 簽名和 Apple 程式碼簽名，具體機制見 Sparkle 的[安全說明](https://sparkle-project.org/documentation/security-and-reliability/)。Electron 應用程式和原廠更新程式使用各自的訂閱來源，Homebrew 則按 formula 與 cask 升級。

這些管道彼此獨立，統一清單需要保留應用程式來源和安裝規則。

<figure class="blog-diagram">
  <img src="https://mole.fit/img/blog/update-channels.webp" width="1360" height="454" loading="lazy" alt="App Store、Sparkle appcast、Electron 訂閱來源、Homebrew 和 GitHub Releases 五個獨立更新管道各自連接到一款應用程式，彼此不可見，Mole 再把它們讀入統一更新列表">
  <figcaption>統一清單會彙總更新管道，但每款應用程式仍按原來的來源、簽名和安裝方式更新。</figcaption>
</figure>

## 統一更新清單有什麼用

[Mole](https://mole.fit/tw/) 的「軟體」頁面把多種管道彙總到一份清單，並保留每款應用程式的來源。它省去了逐個尋找入口的時間，但不會把所有更新變成同一種操作。

## 更新時按這個順序

列出應用程式來源，透過對應管道檢查更新，閱讀相容說明並備份關鍵狀態，再分批安裝。每批完成後，用原來的文件和工作流程複測。無需一次把所有版本號變成最新，先保住可用環境。

每一批更新後，開啟 App，從「關於」面板或 bundle 版本確認真正啟動的副本，不要假定安裝程式一定覆蓋成功。再驗證一個與工作有關的真實文件、外掛、裝置或背景服務，最後回到原更新管道複查。仍顯示過期，往往代表磁碟上有兩份 App，或更新程式替換的不是你啟動的 bundle。

---

Canonical HTML page: https://mole.fit/tw/blog/how-to-update-mac-apps
Blog index for agents: https://mole.fit/tw/blog/llms.txt
Site index for agents: https://mole.fit/llms.txt
