Skip to content

Détection des mises à jour automatiques

Détection des applications Electron

AppPorts identifie les applications Electron via les trois conditions de détection suivantes (vérifiées par ordre de priorité, évaluation en court-circuit) :

#Élément de détectionChemin / Motif
1Framework ElectronLe répertoire Contents/Frameworks/Electron Framework.framework existe
2Variantes d'Electron HelperDes entrées contenant Electron Helper dans le nom existent sous Contents/Frameworks/
3Clés d'identification Info.plistLa clé ElectronDefaultApp ou electron existe dans Contents/Info.plist

Détection de mise à jour automatique Electron

Vérifie en plus l'existence du fichier Contents/Resources/app-update.yml (fichier de configuration pour electron-updater). Si présent, l'application Electron est marquée comme ayant une capacité de mise à jour automatique.

Détection des applications Sparkle

AppPorts identifie les applications Sparkle via les trois conditions de détection suivantes :

#Élément de détectionChemin / Motif
1Framework SparkleContents/Frameworks/Sparkle.framework ou Contents/Frameworks/Squirrel.framework existe
2Fichiers binaires du programme de mise à jourDes fichiers correspondant à shipit, autoupdate, updater, update existent sous Contents/MacOS/ ou Contents/Frameworks/
3Clés Sparkle Info.plistL'une des clés suivantes existe dans Contents/Info.plist : SUFeedURL, SUPublicDSAKeyFile, SUPublicEDKey, SUScheduledCheckInterval, SUAllowsAutomaticUpdates

⚠️ Gestion spéciale des applications Electron

Quand une application a été identifiée comme une application Electron, la condition de détection n°2 (fichiers binaires du programme de mise à jour) est ignorée pour éviter les faux positifs du binaire updater d'electron-updater détecté comme Sparkle.

Applications hybrides Electron + Sparkle

Certaines applications contiennent à la fois le framework Electron et le programme de mise à jour Sparkle. AppPorts détecte les deux indicateurs indépendamment, permettant à isElectron et isSparkle d'être tous deux true.

Logique de détection

text
isElectron = satisfait l'une des trois conditions de détection Electron
isSparkle  = satisfait l'une des trois conditions de détection Sparkle (les applications Electron ignorent la condition n°2)

Les deux indicateurs sont indépendants et peuvent être vrais simultanément.

Comportement après migration

AttributCondition de détermination
hasSelfUpdaterisSparkle ou (isElectron et app-update.yml existe) ou mise à jour auto personnalisée existe
needsLockisSparkle ou (isElectron et app-update.yml existe)

Quand needsLock est true, AppPorts exécute chflags -R uchg (définition du drapeau immuable) sur l'application externe après la fin de la migration, empêchant les mises à jour automatiques de supprimer ou modifier la copie externe.

Détection des mises à jour automatiques personnalisées

Pour les applications natives avec mise à jour automatique qui ne sont ni Sparkle ni Electron (par ex., Chrome, Edge, Parallels), AppPorts les identifie via les motifs suivants :

Chemin de détectionMotif de correspondanceApplications typiques
Contents/Library/LaunchServices/Le nom de fichier contient updateChrome, Edge, Thunderbird
Contents/MacOS/Le nom du binaire contient update ou upgrade (excluant electron)Parallels, Thunderbird
Contents/SharedSupport/Le nom de fichier contient updateWPS Office
Contents/Info.plistLa clé KSProductID existeGoogle Keystone (Chrome)

Identification des stratégies héritées

Lors de la restauration ou de la suppression de liens, AppPorts doit identifier les entrées héritées créées par des versions antérieures :

Caractéristique de la structure localeIdentifié comme
Le chemin racine est un lien symboliquewholeAppSymlink
Contents/ est un lien symboliquedeepContentsWrapper
Contents/Info.plist est un lien symboliquewholeAppSymlink (schéma hybride Sparkle hérité)
Contents/Frameworks/ est un lien symboliquewholeAppSymlink (schéma hybride Electron hérité)
Contents/MacOS/launcher existestubPortal
Aucune correspondance ci-dessusNon géré par AppPorts
最近更新