Обновляйте приложения на Mac так,
как этого ждёт каждое из них.

Большинство программ обновления выбирают один механизм и пропускают через него все приложения. DuoUpdater читает собственный канал выпусков каждого приложения — его appcast Sparkle, его страницу в App Store, его cask в Homebrew, ленту релизов его поставщика — и пользуется именно им.

Скачать для Mac — 0.4.8

Apple Silicon, macOS 15 или новее. Бесплатно и с открытым исходным кодом. Все релизы

Всплывающее окно DuoUpdater в строке меню с заголовком «58 updates available» (доступно 58 обновлений), кнопкой «Update All» (обновить всё) и полем поиска. В каждой строке — установленная версия, новая версия, небольшая метка, показывающая, на чём сделано приложение, и кнопка «Update»; в строке Amp — переход с 1.0 (374) на 1.0 (390). Карточка при наведении на метку AndroMeld гласит: «Native — a native Mac app, built straight on Apple's frameworks, not a cross-platform runtime. Links AppKit and SwiftUI. Built with the macOS 26.5 SDK.» (нативное приложение для Mac, построенное прямо на фреймворках Apple, а не на кроссплатформенной среде; использует AppKit и SwiftUI; собрано с SDK macOS 26.5). Строка внизу сообщает: «3 Homebrew packages not checked» (3 пакета Homebrew не проверены).

Каждая строка показывает, с какой версии на какую будет переход, а кнопка — что на самом деле произойдёт: Обновить запускает установку; Перезапустить означает, что на диске приложение уже обновлено и устарела только запущенная копия. Зелёная точка отмечает запущенное приложение, так что ещё до нажатия вы знаете, будет ли что-то закрыто и открыто заново.

Метка рядом с названием показывает, на чём сделано приложение — Electron, Qt, Chromium, встроенная JVM, Flutter, Tauri, Catalyst или приложение для iPhone, запущенное на Apple Silicon, — а при наведении на неё называются среда выполнения и её версия. Каждый такой вывод делается по тому, что упаковщик действительно положил в пакет, и никогда — по названию приложения или его поставщику, поэтому пакет, который об этом ничего не сообщает, остаётся без метки, а не помечается наугад.

Чем он отличается

Уступает, а не спорит

Если у приложения есть собственный механизм обновления, работу выполняет именно он. Если что-то нельзя сделать безопасно, строка прямо об этом сообщает, вместо того чтобы гадать.

Никогда не завершает принудительно

Закрытие — это обычная команда завершения: ваше приложение показывает свои запросы на сохранение и может отказаться закрываться. У отказавшегося приложения остаётся кнопка «Перезапустить».

Проверяет, кто подписал загрузку

EdDSA там, где приложение публикует ключ, затем подпись Developer ID, Team ID, bundle id и архитектура — всё это должно совпадать с заменяемым приложением, — плюс резервная копия, к которой можно откатиться.

Говорит на вашем языке

English, 简体中文, 繁體中文, 日本語, Deutsch, Español, Français, Italiano, Português (Brasil), Русский и Türkçe. Отдельной настройки языка нет — приложение следует тому языку, который уже выбран в macOS.

У него нет сервера

Ни телеметрии, ни SDK для аналитики. Каждый запрос идёт напрямую к поставщику проверяемого приложения и не содержит никаких сведений о вас.

Окно приложения: боковая панель со списком всех просканированных приложений и заметки о выпуске для выбранного, показанные нативным текстом — заголовок с версией, дата и по одному пункту списка на каждое изменение.
Открыв окно, вы видите всё, что было просканировано, и заметки о выпуске для выбранного приложения. Если поставщик публикует заметки в форме, которую стоит разбирать, DuoUpdater раскладывает их на части и показывает нативным текстом, а не встроенной веб-страницей.
Хронология «Release Log» (журнал релизов): релизы сгруппированы по дням, у каждого — приложение, версия, источник и либо точное время публикации, либо примерный интервал.
Каждая замеченная версия записывается, так что со временем складывается журнал того, когда программы, которыми вы пользуетесь, на самом деле выходят. Время релиза называется точным, только если его указывает собственная лента поставщика; всё остальное показывается как интервал со знаком ≈, потому что больше мы честно не знаем.
Основные настройки DuoUpdater («General»), рядом боковая панель с разделами «Folders», «Updates», «GitHub», «Alcove», «Ignored» и «Diagnostics»: запуск при входе в систему, интервал проверки, скрытие значка в Dock, показ того, на чём сделано каждое приложение, уведомления, автоматический перезапуск, резервные копии для отката и занимаемое ими место, сколько приложений проверять одновременно, а также путь установки для обновлений из App Store, самообновляющихся приложений и бета-версий TestFlight.
Большая часть настроек — о том, сколько самостоятельности вы даёте DuoUpdater: перезапускать ли приложения за вас, хранить ли резервную копию для отката и каким путём устанавливать обновления в двух неудобных случаях — для приложений из Mac App Store и для приложений со своим механизмом обновления.