Pourquoi «Ouvrir avec» affiche-t-il autant d'instances d'une application? [dupliquer]

17

Lorsque je sélectionne un fichier et clique dessus pour utiliser l'option "Ouvrir avec", je vois une liste des applications les plus susceptibles d'ouvrir ce fichier, mais dans mon cas, en exécutant 10.9.5, je vois trois et parfois quatre instances de chaque application recommandée pour ouvrir ce fichier particulier - voir capture d'écran ci-jointe. Pourquoi est-ce? Existe-t-il un moyen de réduire cela à une instance par application? Si c'est le cas, comment?

entrez la description de l'image ici

fmz
la source
Mike, j'admire votre diligence dans la surveillance, cependant, ma question est tellement plus claire que le double présumé. Le nombre de vues témoigne de sa validité. Sur la base du seul titre, vous ne sauriez jamais que c'était même le même sujet.
fmz
Nous fermons les questions tout le temps quand ils reformulent le problème et désignons un seul endroit pour toutes les réponses. Si votre question n'avait pas été une bonne et claire reformulation du problème, je l'aurais entièrement supprimée après l'avoir liée. N'hésitez pas à le modifier ou à demander sur la méta si vous pouvez nous aider à indiquer une meilleure réponse canonique sur la façon de corriger les services de lancement. C'est quelque chose qui existe depuis longtemps et je ne le vois pas changer de si tôt.
bmike
Et, comme toujours - posez une question sur Ask Different Meta si vous n'êtes pas sûr de la raison pour laquelle quelque chose a été modéré ou si vous voulez avoir un résultat différent de la situation actuelle. Plus d'yeux sur le fil aide souvent tout le monde - moi y compris. Merci pour les commentaires.
bmike

Réponses:

15

Reconstruisez LaunchServices pour corriger les entrées en double dans le menu «Ouvrir avec» d'OS X

Pour résoudre ce problème, nous devons réinitialiser la base de données LaunchServices d'OS X. Comme c'est le cas avec la plupart des actions sous OS X, il existe plusieurs façons d'accomplir cette tâche, mais la plus rapide consiste à simplement utiliser une commande Terminal.

À partir de cet article - Copiez le suivi dans votre terminal

/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -kill -r -domain local -domain system -domain user
Ruskes
la source
Votre solution est-elle équivalente à celle de grgarside. Mon Terminal-fu n'est pas assez bon pour les analyser avec précision, mais ils semblent similaires.
Tetsujin
1
@Tetsujin Ils sont équivalents. Le globbing dans le premier se développe sur le dernier chemin.
grg
7

Il s'agit d'un bogue de longue date dans OS X. Vous pouvez le corriger avec lsregister:

/Sy*/L*/Fr*/CoreS*/F*/L*/S*/lsregister -kill -r -domain local -domain system -domain user
grg
la source
1
Pourriez-vous être si gentil et fournir quelques références, vous connaissez juste une procédure standard pour nous tous.
Ruskes
1
@Buscar Je n'ai aucune citation spécifique - c'est l'une de ces commandes que j'ai dans une de mes listes de référence.
grg
2
Heh, ça ressemble à quelque chose directement de Code Golf ;)
Poignée de porte
4

En plus des autres réponses, il peut afficher plusieurs copies qui existent sur d'autres disques durs ou des copies de sauvegarde. Un disque dur externe que vous utilisez pour les sauvegardes Time Machine peut apparaître en option si vos applications sont sauvegardées sur ce lecteur.

Si vous êtes curieux de savoir d'où viennent les applications, ouvrez l'une des autres applications. Ensuite, depuis le Dock, contrôlez + cliquez sur l'icône des applications et choisissez: Options> "Afficher dans le Finder". Cela vous montrera où se trouve l'application.

Utilisez la ligne de commande fournie par Buscar 웃 pour mettre à jour les LaunchServices de votre système.

esprit
la source
2

Pour développer les réponses fournies par grgarside et Buscar, vous pouvez le rendre un peu moins pénible en définissant un alias dans votre script .bashrc. Pour ce faire, ouvrez Terminal.app et avec votre éditeur de texte préféré (vi, nano, emacs si vous êtes si enclin) éditez .bashrcpour ajouter la ligne suivante à la toute fin:

alias rmdup="/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -kill -r -domain local -domain user; killall Finder"

Notez que rmdupc'est juste un nom d'alias que j'ai choisi pour me souvenir facilement de la commande plus tard (il est destiné à s'étendre pour «supprimer les doublons»). Vous pouvez choisir n'importe quel autre nom d'alias que vous aimez, faites juste attention à ne pas utiliser un nom déjà utilisé pour une autre commande.

Après avoir modifié votre .bashrc, lorsque vous remarquez à nouveau des applications en double, vous pouvez simplement ouvrir Terminal.app et taper rmdupou tout autre nom que vous avez choisi, au lieu du chemin complet de la lsregistercommande avec tous ses arguments, etc.

Mike
la source