Почему «Открыть с помощью» отображает так много экземпляров приложения? [Дубликат]

17

Когда я выбираю файл и щелкаю по нему правой кнопкой мыши, чтобы использовать опцию «Открыть с помощью», я вижу список наиболее вероятных приложений для открытия этого файла, но в моем случае при запуске 10.9.5 я вижу три, а иногда и четыре экземпляра каждое рекомендуемое приложение для открытия этого конкретного файла - см. скриншот. Почему это? Есть ли способ уменьшить это до одного экземпляра на приложение? Если да, то как?

введите описание изображения здесь

FMZ
источник
Майк, я восхищаюсь твоим усердием в мониторинге, однако мой вопрос намного яснее, чем предполагаемый дубликат. Количество просмотров является свидетельством его обоснованности. Основываясь на одном только названии, вы никогда не узнаете, что это была одна и та же тема.
FMZ
Мы закрываем вопросы все время, когда они повторяют проблему и указывают на одно место для всех ответов. Если бы ваш вопрос не был хорошей и четкой перефразировкой проблемы, я бы полностью удалил ее после ссылки. Не стесняйтесь редактировать его или спросить на мета, если вы можете помочь нам указать лучший канонический ответ о том, как исправить службы запуска. Это то, что существует уже давно, и я не вижу, чтобы это изменилось в ближайшее время.
bmike
И, как всегда, задайте вопрос на « Спросите другую мету», если вы не уверены, почему что-то было модерировано или хотите получить результат, отличный от текущей ситуации. Больше взглядов на темы часто помогает всем, включая меня. Спасибо за ответ.
bmike

Ответы:

15

Перестройте LaunchServices для исправления дублирующихся записей в меню «Открыть с» в OS X

Чтобы это исправить, нам нужно сбросить базу данных OS X LaunchServices. Как и в случае с большинством действий в OS X, есть несколько способов выполнить эту задачу, но самый быстрый - просто использовать команду терминала.

Из этой статьи - Скопируйте следующее в ваш терминал

/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -kill -r -domain local -domain system -domain user
Ruskes
источник
Ваше решение эквивалентно решению Grgarside. Мой Терминал-фу недостаточно хорош для их точного разбора, но они выглядят так, как будто они должны быть похожими.
Тетсуджин
1
@ Tetsujin Они эквивалентны. Глобализация в первом расширяется до последнего пути.
grg
7

Это давняя ошибка в OS X. Вы можете исправить это с помощью lsregister:

/Sy*/L*/Fr*/CoreS*/F*/L*/S*/lsregister -kill -r -domain local -domain system -domain user
Grg
источник
1
Если вы будете так любезны и предоставите некоторые рекомендации, вы знаете, что это стандартная процедура для всех нас.
Рускес
1
@Buscar У меня нет конкретной цитаты - это одна из тех команд, которые у меня есть в одном из моих списков ссылок.
grg
2
Хех, похоже на что-то прямо из Code Golf ;)
дверная ручка
4

В дополнение к другим ответам, он может показать несколько копий, которые существуют на других жестких дисках или резервных копий. Внешний жесткий диск, который вы используете для резервного копирования Time Machine, может отображаться как опция, если ваши приложения копируются на этот диск.

Если вам интересно, откуда поступают приложения, откройте одно из других приложений. Затем в Dock удерживая клавишу Control, щелкните значок приложения и выберите: «Параметры»> «Показать в Finder». Это покажет вам, где находится приложение.

Используйте командную строку, предоставленную Buscar 웃, чтобы обновить LaunchServices вашей системы.

mindmischief
источник
2

Чтобы расширить ответы, предоставленные grgarside и Buscar, вы можете немного облегчить задачу, определив псевдоним в своем скрипте .bashrc. Для этого откройте Terminal.app и с вашим любимым текстовым редактором (vi, nano, emacs, если вы так склонны) отредактируйте, .bashrcдобавив следующую строку в самом конце:

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

Обратите внимание, что rmdupэто просто псевдоним, который я выбрал, чтобы легко запомнить команду позже (она предназначена для расширения «удалить дубликаты»). Вы можете выбрать любое другое псевдоним, которое вам нравится, но будьте осторожны, вы не используете имя, уже использованное для другой команды.

После изменения вашего .bashrc, когда вы снова заметите дублирующиеся приложения, вы можете просто открыть Terminal.app и ввести rmdupили любое другое выбранное вами имя вместо полного пути к lsregisterкоманде со всеми ее аргументами и т. Д.

Майк
источник