Dlaczego „Otwórz za pomocą” wyświetla tak wiele wystąpień aplikacji? [duplikować]

17

Kiedy wybieram plik i klikam go prawym przyciskiem myszy, aby skorzystać z opcji „Otwórz za pomocą”, widzę listę najbardziej prawdopodobnych aplikacji do otwierania tego pliku, ale w moim przypadku, w wersji 10.9.5, widzę trzy, a czasem cztery wystąpienia każda zalecana aplikacja do otwierania tego konkretnego pliku - patrz załączony zrzut ekranu. Dlaczego to? Czy istnieje sposób na ograniczenie tego do jednej instancji na aplikację? Jeśli tak to jak?

wprowadź opis zdjęcia tutaj

fmz
źródło
Mike, podziwiam twoją staranność w monitorowaniu, jednak moje pytanie jest o wiele jaśniejsze niż rzekomy duplikat. Liczba wyświetleń świadczy o jego ważności. Na podstawie samego tytułu nigdy nie dowiesz się, że to był ten sam temat.
fmz
Zamykamy pytania przez cały czas, gdy rozwiązują problem i wskazują na jedno miejsce dla wszystkich odpowiedzi. Gdyby twoje pytanie nie było dobrym i jasnym sformułowaniem problemu, usunęłbym je całkowicie po połączeniu. Możesz go edytować lub zapytać na meta, czy możesz nam pomóc wskazać lepszą kanoniczną odpowiedź na temat tego, jak poprawić usługi uruchamiania. Jest to coś, co istnieje od dawna i nie widzę, aby zmieniło się to w najbliższym czasie.
bmike
I jak zawsze - zadaj pytanie na Ask Different Meta, jeśli nie jesteś pewien, dlaczego coś zostało moderowane lub chcesz mieć inny wynik niż obecna sytuacja. Więcej oczu na wątek często pomaga wszystkim - w tym mnie. Dziękujemy za opinię.
bmike

Odpowiedzi:

15

Odbuduj usługi uruchamiania, aby naprawić zduplikowane wpisy w menu „Otwórz za pomocą” systemu OS X.

Aby to naprawić, musimy zresetować bazę danych LaunchServices systemu OS X. Podobnie jak w przypadku większości działań w systemie OS X, istnieje wiele sposobów wykonania tego zadania, ale najszybszym jest po prostu użycie polecenia Terminal.

Z tego artykułu-Skopiuj następujące do swojego terminala

/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -kill -r -domain local -domain system -domain user
Ruskes
źródło
Czy twoje rozwiązanie jest równoważne z grgarside. Moje Terminal-fu nie jest wystarczająco dobre, aby dokładnie je przeanalizować, ale wyglądają, jakby były podobne.
Tetsujin
1
@Tetsujin Są równoważne. Globbing w pierwszym z nich rozszerza się na drugą ścieżkę.
grg
7

To długotrwały błąd w systemie OS X. Możesz go naprawić za pomocą lsregister:

/Sy*/L*/Fr*/CoreS*/F*/L*/S*/lsregister -kill -r -domain local -domain system -domain user
grg
źródło
1
Czy byłbyś tak miły i podał kilka referencji, znasz tylko standardową procedurę dla nas wszystkich.
Ruskes
1
@Buscar Nie mam konkretnego cytatu - jest to jedno z tych poleceń, które mam na jednej z moich list referencyjnych.
grg
2
Heh, wygląda jak coś z Code Golf ;)
Klamka
4

Oprócz innych odpowiedzi może pokazywać wiele kopii istniejących na innych dyskach twardych lub kopiach zapasowych. Zewnętrzny dysk twardy, którego używasz do tworzenia kopii zapasowych Time Machine, może pojawić się jako opcja, jeśli twoja aplikacja ma kopię zapasową na tym dysku.

Jeśli jesteś ciekawy, skąd pochodzą aplikacje, otwórz jedną z pozostałych aplikacji. Następnie w Docku, kontroluj + kliknij ikonę aplikacji i wybierz: Opcje> „Pokaż w Finderze”. To pokaże, gdzie jest aplikacja.

Użyj wiersza poleceń dostarczonego przez Buscar 웃, aby zaktualizować usługi LaunchService Twojego systemu.

psota
źródło
2

Aby rozwinąć odpowiedzi udzielone przez grgarside i Buscar, możesz sprawić, by było to mniej uciążliwe poprzez zdefiniowanie aliasu w skrypcie .bashrc. Aby to zrobić, otwórz Terminal.app, a wraz z Tobą ulubiony edytor tekstu (vi, nano, emacs, jeśli masz taką skłonność) edytuj, .bashrcaby dodać następujący wiersz na samym końcu:

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

Zauważ, że rmdupto tylko pseudonim, który wybrałem, aby później łatwo zapamiętać polecenie (ma ono rozwinąć się, aby „usunąć duplikaty”). Możesz wybrać dowolny inny alias, który ci się podoba, uważaj jednak, aby nie użyć nazwy, która była już używana w innym poleceniu.

Po zmianie pliku .bashrc, gdy ponownie zauważysz zduplikowane aplikacje, możesz po prostu otworzyć Terminal.app i wpisać rmdupdowolną inną nazwę, zamiast pełnej ścieżki do lsregisterpolecenia ze wszystkimi jego argumentami itp.

mikrofon
źródło