用每個 App 預期的方式,
更新你的 Mac App。
大多數更新工具只挑一種機制,再把所有 App 都套進去。DuoUpdater 則會讀取每個 App 自己的發行管道——Sparkle appcast、App Store 上的頁面、Homebrew cask、廠商的發行資訊來源——然後就照那個管道來更新。
Apple Silicon,macOS 15 或以上版本。免費且開放原始碼。 所有發行版本

每一列都寫明從哪個版本更新到哪個版本,按鈕則說明實際會發生什麼事:更新會進行安裝;重新開啟表示磁碟上的 App 已經更新好了,只是正在執行的那一份還是舊的。正在執行的 App 會以綠點標示,讓你在按下去之前就知道有沒有 App 即將被結束再重新開啟。
名稱旁的徽章標示 App 是用什麼打造的——Electron、Qt、Chromium、內建的 JVM、Flutter、Tauri、Catalyst,或是在 Apple Silicon 上執行的 iPhone App——指標停在上面時,會顯示執行環境的名稱與版本。每一項都是從打包者實際附帶的內容讀出來的,絕不依據 App 的名稱或廠商來判斷;因此 bundle 本身沒有透露的,就維持不標示,而不是用猜的。
它有哪些不同
它交棒,而不是硬搶
App 如果附帶自己的更新程式,就交給那個更新程式來做。遇到無法安全完成的情況,那一列會直接說明,而不是用猜的。
它從不強制結束
結束 App 時送出的只是一般的結束請求——你的 App 會照常跳出自己的儲存提示,也可以拒絕結束。拒絕結束的 App,那一列會保留它的「重新開啟」按鈕。
它會檢查下載檔是誰簽署的
若 App 有發布金鑰,就先驗證 EdDSA;接著 Developer ID 簽署、Team ID、bundle id 與架構,全都必須與要被取代的 App 相符——另外還會留一份可供回復的備份。
它用你的語言
English、简体中文、繁體中文、日本語、Deutsch、Español、Français、Italiano、Português (Brasil)、Русский 和 Türkçe。沒有語言設定——它直接沿用 macOS 目前設定的語言。
它沒有伺服器
沒有遙測,也沒有分析 SDK。每個請求都直接送往被檢查的那個 App 的廠商,不帶任何關於你的資訊。


