Wie Floodtide ein Update überprüft

Stand:

Ein Updater, der Apps in Ihrem Programme-Ordner ersetzt, sollte genau sagen können, was er prüft. Diese Seite ist aus dem Quelltext von Floodtide geschrieben, in der Reihenfolge, in der die Prüfungen laufen: woher ein Update kommt, was für die Datei bürgen muss, was nach dem Entpacken geprüft wird, was passiert, wenn eine Prüfung fehlschlägt, und was aufbewahrt wird, damit Sie zurück können.

Woher ein Update kommt

Floodtide führt keine eigene Datenbank mit Versionen. Für jede App fragt es die Quellen, die es ohnehin wissen, und die Zeile nennt, welche geantwortet hat.

  • Der eigene Update-Feed der App. Ein Sparkle-Feed, dessen Adresse Floodtide aus dem App-Bundle selbst liest. Nennt die App einen, hat dieser Feed Vorrang vor jeder anderen Quelle.
  • Der Cask-Katalog von Homebrew. Direkt aus dem Katalog von Homebrew gelesen, Homebrew muss dafür also nicht installiert sein. Eine App, die Homebrew installiert hat, aktualisiert weiterhin Homebrew, und Floodtide zieht für sie die Antwort des Casks vor.
  • GitHub Releases und Electron-Feeds. Für Apps, die weder einen Appcast noch einen Cask veröffentlichen. Floodtide wählt genau einen eindeutigen Mac-Build für den Prozessor dieses Mac aus, statt zwischen mehreren zu raten.
  • Der Mac App Store. Nur für Apps, die der Store installiert hat, gelesen aus dem, was der Store diesem Mac anbietet. Einer Store-App wird nie ein direkter Download angeboten, und nach einer App von außerhalb des Stores wird dort nie gefragt.
  • Der signierte Katalog von Floodtide, und Ihre eigenen Quellen. Ein von Hand recherchierter Feed, der immer nur nennt, welche Quelle für eine App gelesen wird; gelesen wird also weiterhin über die Quellen oben, und an der Überprüfung ändert sich nichts. Eine Sparkle-Adresse oder ein GitHub-Repository, das Sie selbst festlegen, wird vor allem geprüft, was Floodtide selbst findet.

Verglichen werden die Version und, wo beide Seiten eine veröffentlichen, die Build-Nummer. Eine Version wird nur angeboten, wenn sie bei diesem Vergleich neuer ist als die installierte Kopie. Eine ältere Version, oder die Version, die Sie schon haben, wird nicht als Update angezeigt.

Zwei Vergleiche werden schon bei der Suche abgelehnt, nicht erst nach einem Download: Ein Sprung, der nicht zusammenpasst, etwa von 5.92 auf 2584447, bleibt bei „Alle aktualisieren“ und bei geplanten Durchläufen außen vor, und eine Version, die sich als Demo oder Testversion zu erkennen gibt, wird nie einer lizenzierten Kopie angeboten.

Was für die Datei bürgen muss

Bevor eine Zeile überhaupt einen Knopf „Aktualisieren“ bekommt, muss etwas für die Datei bürgen, die sie laden würde. Die Regel wird zweimal gefragt, einmal bei der Suche und einmal vom Download selbst, damit keine Zeile einen Knopf anbietet, den der Download dann ablehnt. Drei Dinge zählen, und eine Zeile braucht eines davon.

  • Eine von der Quelle veröffentlichte Prüfsumme. Der SHA-256-Wert, den ein Homebrew-Cask für die Datei festhält, oder der SHA-512-Wert, den ein Electron-Feed neben jedem Download veröffentlicht.
  • Eine Signatur im Feed. Ein Sparkle-Feed kann für jeden Download eine EdDSA-Signatur tragen, und die App trägt den passenden öffentlichen Schlüssel. Floodtide überprüft die Datei gegen diesen Schlüssel.
  • Die eigene Signatur der installierten Kopie. Wird keines von beiden veröffentlicht, muss die Kopie auf Ihrem Mac gültig von einem Developer-ID-Team signiert sein, und der Ersatz wird nach dem Entpacken an demselben Team gemessen. Eine unsignierte App ohne Prüfsumme und ohne Feed-Signatur bekommt keinen Knopf „Aktualisieren“: Die Zeile zeigt die Version und sagt, dass Floodtide nicht bestätigen konnte, dass der Download echt ist.

Was an der heruntergeladenen Datei geprüft wird

  • Die Verbindung. Ausgelieferte Builds laden nur über https. Eine reine http-Adresse wird zuerst über https angefragt und abgelehnt, wenn der Server die Datei so nicht ausliefert. Ein Link, der mit einer Webseite statt mit einer Datei antwortet, wird ebenfalls abgelehnt.
  • Die Prüfsumme. Wo die Quelle eine veröffentlicht hat, wird der SHA-256- oder SHA-512-Wert der angekommenen Bytes damit verglichen. Stimmt er nicht, sagt die Zeile, dass der Download nicht unversehrt angekommen ist, und nichts wird entpackt.
  • Die Feed-Signatur. Wo der Feed den Download signiert hat, wird die EdDSA-Signatur gegen den Schlüssel in der installierten App geprüft. Stimmt sie nicht, sagt die Zeile, dass der Download nicht von dem Entwickler signiert ist, den Floodtide erwartet hat.

Was nach dem Entpacken geprüft wird

Der Download wird in einen eigenen Ordner entpackt, und die App darin wird geprüft, bevor irgendetwas auf Ihrem Mac angerührt wird. Die Zeile zeigt jeden Schritt, während er läuft: Wird entpackt, Signatur wird überprüft, Überprüfung mit Gatekeeper.

  • Es ist dieselbe App. Die Bundle-Kennung muss die der installierten App sein. Ein Download, der eine andere App ist, wird abgelehnt und gemerkt, damit dieselbe Datei bei der nächsten Suche nicht erneut geladen wird. Eine Umbenennung durch den Entwickler selbst ist nur erlaubt, wenn beide Kopien eine Developer-ID-Signatur desselben Teams tragen und der Download notarisiert ist, und selbst dann fragt Floodtide Sie, bevor er landet.
  • Es ist nicht älter. Version und Build im Download werden mit der installierten Kopie verglichen, und eine ältere Version oder ein älterer Build wird abgelehnt. Ein Download, der sich als der bereits installierte Build herausstellt, wird daran erkannt, dass seine Codesignatur mit der der installierten Kopie identisch ist, und die Zeile sagt das, statt ein Update zu behaupten.
  • Es läuft auf diesem Mac. Die macOS-Version, die der neue Build braucht, wird mit Ihrer verglichen. Ein Build, der ein neueres macOS braucht, wird mit dieser Version benannt abgelehnt, und die Ablehnung löst sich von selbst, sobald Sie aktualisiert haben. Der neue Build muss außerdem Code für den Prozessor dieses Mac enthalten, wenn die installierte Kopie das tut, sodass ein reiner Intel-Build nie eine native Apple-Silicon-App ersetzt.
  • Die Codesignatur hält. Floodtide lässt die tiefe, strikte Überprüfung von codesign über das neue Bundle laufen, die jede Datei darin hasht. Finder-Metadaten auf der Kopie oder ein älteres Signaturformat werden verziehen; eine veränderte Datei oder ein gebrochenes Siegel nicht.
  • Das signierende Team stimmt. Die Team-Kennung in der Signatur des neuen Builds muss der der installierten App entsprechen. Eine gültig signierte App wird nur je durch eine gültig signierte App ersetzt, nie durch eine unsignierte oder eine ohne Team. Ein anderes Team ist entweder ein echter Entwicklerwechsel oder ein gekaperter Feed, und Floodtide kann das nicht unterscheiden, also hält das Update an und fragt Sie; Ihre Antwort gilt für diese eine App. Eine unsignierte installierte App darf nur zu einem gültig signierten Build wechseln.
  • Gatekeeper stimmt zu. Jedes signierte Bundle wird zusätzlich von Gatekeeper beurteilt, der Notarisierung, Widerruf und die Sicherheitsrichtlinie dieses Mac abwägt, mit mindestens zehn Minuten Zeit auf langsamen Macs. Auf einem Mac, dessen Profil nur Apps aus dem App Store erlaubt, lehnt Gatekeeper jeden Developer-ID-Build ab, und Floodtide sagt, dass das die Richtlinie des Mac ist und kein Fehler des Updates.
  • Und noch einmal nach dem Tausch. Die Kopie, die landet, wird ein zweites Mal gegen die Kopie geprüft, die sie ersetzt hat. Schlägt diese letzte Prüfung fehl, wird das Original zurückgelegt, und die Zeile sagt es. Nur ein Weg, der diese Nachprüfung ausführt, darf mit „Fertig, Version überprüft“ enden.

Installationspakete

Manche Apps kommen als Installationspaket statt als App-Bundle. Ein Paket führt seine eigenen Skripte als Administrator aus, deshalb wird es an einem eigenen Maßstab gemessen: Gatekeeper beurteilt es als Installationsprogramm, und wenn keine Prüfsumme für den Download gebürgt hat, muss das Developer-ID-Installer-Zertifikat, mit dem es signiert ist, das Team der installierten App nennen. Floodtide hält den SHA-256-Wert des Pakets vor dieser Beurteilung fest und prüft ihn unmittelbar vor der Übergabe an das Installationsprogramm noch einmal, damit genau die Datei läuft, die beurteilt wurde.

Ein eigenes Installationsprogramm des Herstellers, das ohne Prüfsumme angekommen ist, muss drei Dinge in einer Anforderung erfüllen: eine Developer-ID-Signatur, die Notarisierung durch Apple und das Team der installierten Kopie.

Wenn eine Prüfung fehlschlägt

Das Update wird abgelehnt, auf Ihrem Mac hat sich nichts geändert, und die Zeile sagt in einem Satz, was gefunden wurde und was als Nächstes zu tun ist. Eine falsche Prüfsumme liest sich als „Der Download ist nicht unversehrt angekommen“. Eine fehlgeschlagene Signatur- oder Gatekeeper-Prüfung liest sich als „Das Update erfüllt die Anforderungen von Floodtide an Codesignatur oder Notarisierung nicht“, mit dem Schritt, dieses Update stattdessen beim Entwickler zu laden.

Eine Ablehnung, die die Datei selbst betrifft, eine andere App darin, eine fehlgeschlagene Signatur, nichts Installierbares, ein Format, das Floodtide nicht öffnen kann, wird für diese Version gemerkt, damit die Zeile weiter sagt, was gefunden wurde, statt bei jeder Suche einen Download dafür auszugeben. Eine Ablehnung, die diesen Mac betrifft, eine macOS-Untergrenze oder ein Profil nur für den App Store, wird mit dem gemerkt, wogegen sie festgestellt wurde, und löst sich von selbst, wenn sich der Mac ändert.

Jeder Schritt einer Installation hat ein Zeitlimit, das zur App passt. Eine Prüfung, die es überschreitet, beendet das Update mit dem Namen des Schritts, bei unberührter App, und eine abgebrochene Prüfung zählt als nicht bestanden, nie als bestanden.

Die Sicherung, und der Weg zurück

Mit eingeschalteten Sicherungen, der Voreinstellung, kopiert Floodtide die installierte App, bevor es sie ersetzt: als Klon, wo das Laufwerk das unterstützt, sonst als Zip-Archiv, in einen eigenen Ordner für Sicherungen, den Sie auf ein anderes Laufwerk legen können. Kann diese Kopie nicht angelegt werden, findet das Update nicht statt.

„Letztes Update rückgängig machen“ legt die neueste Kopie mit einem Klick zurück, solange die App nicht läuft, und die wiederhergestellte Kopie durchläuft Gatekeeper erneut, bevor sie landet. Die Kopie wird drei Tage, eine Woche, zwei Wochen oder einen Monat aufbewahrt, eine Woche in der Voreinstellung; der Knopf zählt die verbleibenden Tage, und „Sicherungen löschen“ in den Einstellungen entfernt alle.

Unabhängig von den Sicherungen behält der Tausch selbst das Original beiseite, bis die neue Kopie gelandet ist und ihre letzte Prüfung bestanden hat. Eine fehlgeschlagene Installation legt das Original auch dann zurück, wenn Sicherungen ausgeschaltet sind.

„Frühere Versionen“ in den Details einer App listet die älteren Versionen auf, die ihre Quelle noch veröffentlicht. Wählen Sie eine aus, wird sie über dieselben Signatur-, Team- und Gatekeeper-Prüfungen installiert wie ein Update; nur die Regel, dass ein Download neuer sein muss, tritt zurück, denn genau das ist der Sinn des Zurücksetzens auf eine ältere Version. Für eine App, die Administratorrechte zum Ersetzen braucht, wird es nicht angeboten.

Was ein Update zurückhält

Neben einer fehlgeschlagenen Prüfung gibt es Regeln, die ein Update warten lassen, ohne es abzulehnen.

  • Die App ist geöffnet. Floodtide schließt nie eine App für Sie. Ein geplanter Durchlauf lässt eine geöffnete App in Ruhe und installiert ihr Update, wenn Sie die App beenden. „Beenden und aktualisieren“, das Sie selbst drücken, bittet die App höflich, sich zu beenden; weigert sie sich, bietet das Menü des Knopfs „Sofort beenden und aktualisieren“ an, das diese eine App erst nach Ihrer Bestätigung schließt.
  • Der letzte automatische Versuch ist fehlgeschlagen. Mit automatischen Updates bleibt eine App, deren letzter automatischer Versuch fehlgeschlagen ist, etwa 17 Stunden auf dieser Version, bevor ein geplanter Durchlauf es erneut versucht, damit eine stündliche Prüfung nicht jede Stunde dieselbe fehlschlagende Datei lädt. Ihr eigenes „Aktualisieren“, „Alle aktualisieren“ oder „Nach Updates suchen“ versucht es weiterhin sofort.
  • Der Mac ist nicht bereit. Ein geplanter Durchlauf startet nicht in Ihren Ruhezeiten, bei niedrigem Akkustand, im Stromsparmodus oder bei einer eingeschränkten Verbindung, und versucht es erneut, sobald das vorbei ist.
  • Ein geplanter Durchlauf ist strenger. Er lässt Floodtide selbst aus, jede App, die Ihr Administratorpasswort bräuchte, jede Hauptversion, wenn „Alle aktualisieren“ diese auslassen soll, jede App, die das eigene Installationsprogramm des Herstellers braucht, jede Version, die sich in einem früheren Durchlauf als nicht installierbar erwiesen hat, und jede App, die Sie ausgeschaltet haben. Er beantwortet nie eine Frage, etwa nach einem gewechselten Signaturteam, in Ihrem Namen.

Was Floodtide nie tut

  • Ohne Ihre Zustimmung installieren. Das automatische Installieren ist aus, bis Sie es einschalten, und die Updates von Floodtide selbst haben einen eigenen Schalter. Eine Prüfung nach Zeitplan schaut nur nach. Die macOS-Seite listet die Systemupdates auf, die die Softwareaktualisierung anbietet, und öffnet die Softwareaktualisierung; Floodtide installiert macOS nie selbst.
  • Eine Prüfung abkürzen. Ein automatischer Durchlauf und „Alle aktualisieren“ führen dieselben Prüfungen aus wie ein einzelnes „Aktualisieren“, ohne Abkürzung.
  • Ihr Passwort sehen. Eine App in einem Ordner, den macOS schützt, braucht dieselbe Administrator-Abfrage, die jedes Installationsprogramm zeigt, einmal für den ganzen Durchlauf und angekündigt, bevor sie erscheint. macOS übernimmt das Passwort; Floodtide sieht und speichert es nie, und ein geplanter Durchlauf fragt nie danach.
  • Ihre App-Liste irgendwohin senden, wo Sie es nicht erlaubt haben. Welche Apps und Versionen dieser Mac verwendet, wird einmal am Tag ohne Kennung geteilt, damit jeder Mac jedem anderen hilft; die App sagt es Ihnen beim ersten Start, und unter Einstellungen, Datenschutz sehen Sie genau, was gesendet wird, und schalten es aus. Die anonyme Nutzungszählung bleibt aus, bis Sie sie einschalten. Sonst verlässt nichts über Sie den Mac. Die Datenschutzerklärung (auf Englisch) listet jede Anfrage einzeln auf.
  • Berechtigungen verlangen, die es nicht erklären kann. Kein Festplattenvollzugriff, keine Bedienungshilfen, keine Bildschirmaufnahme. Floodtide liest Versionsangaben der Apps aus Ihrem Programme-Ordner wie jeder Dateibrowser.

Häufige Fragen

Überprüft Floodtide Codesignaturen?

Ja. Jedes entpackte App-Bundle durchläuft die tiefe, strikte Überprüfung von codesign, sein Signaturteam muss dem der installierten App entsprechen, und Gatekeeper beurteilt es, bevor etwas ersetzt wird. Die Kopie, die landet, wird noch einmal gegen die ersetzte Kopie geprüft und zurückgelegt, wenn diese Prüfung fehlschlägt.

Was passiert, wenn die Prüfsumme nicht stimmt?

Das Update wird abgelehnt, bevor etwas entpackt wird, und auf Ihrem Mac wird nichts angerührt. Die Zeile sagt, dass der Download nicht unversehrt angekommen ist, und schlägt vor, erneut auf „Aktualisieren“ zu drücken; hat sich die Datei des Entwicklers tatsächlich geändert, bietet Floodtide sie an, sobald die Quelle nachgezogen hat.

Kann ich ein Update rückgängig machen?

Ja. Mit eingeschalteten Sicherungen, der Voreinstellung, bleibt die ersetzte Kopie als Klon oder Zip für die Dauer erhalten, die Sie wählen, eine Woche in der Voreinstellung, und „Letztes Update rückgängig machen“ stellt sie mit einem Klick wieder her, solange die App nicht läuft. „Frühere Versionen“ in den Details einer App kann außerdem eine ältere Version installieren, die die Quelle noch veröffentlicht, über dieselben Prüfungen wie ein Update.

Installiert Floodtide je etwas, ohne zu fragen?

Nein. Das automatische Installieren ist aus, bis Sie es einschalten, und auch dann führt es dieselben Prüfungen aus wie ein manuelles Update, schließt nie eine App, fragt nie nach Ihrem Passwort und entscheidet nie für Sie über ein gewechseltes Signaturteam. Die Updates von Floodtide selbst haben einen eigenen Schalter, und die macOS-Seite listet Apples Updates nur auf.

Woher bekommt Floodtide Updates?

Aus dem eigenen Sparkle-Feed der App, dem Cask-Katalog von Homebrew, GitHub Releases, Electron-Update-Feeds, dem Mac App Store für die Apps, die er installiert hat, und dem eigenen signierten Katalog von Floodtide, der nur nennt, welche dieser Quellen gelesen wird. Sie können eine App auch selbst auf eine Sparkle-Adresse oder ein GitHub-Repository verweisen.

Prüft Floodtide, ob das Update auf meinem Mac läuft?

Ja. Die macOS-Version, die der neue Build braucht, wird mit Ihrer verglichen, und ein Build, der ein neueres macOS braucht, wird mit dieser Version benannt zurückgehalten, bis Sie aktualisieren. Der neue Build muss außerdem Code für den Prozessor dieses Mac enthalten, wenn die installierte Kopie das tut, sodass ein reiner Intel-Build nie eine native Apple-Silicon-App ersetzt.

Sehen Sie, was Floodtide auf Ihrem eigenen Mac prüft

Die Suche ist kostenlos und braucht kein Konto. 14 Tage die volle App, danach bleibt die Suche kostenlos; eine Lizenz kostet £10.99 einmalig für 3 Macs.