Lokalizacja pliku systemowego, który łączy role z aplikacjami

0

RCDefaultApp może zmienić tak zwane „role” macOS, np. zmień obsługę mailto: protokół. Jest to przechowywane w następującym pliku:

defaults read ~/Library/Preferences/com.apple.LaunchServices/com.apple.launchservices.secure.plist

LSHandlers = (
...
    LSHandlerRoleAll = "com.apple.mail";
    LSHandlerURLScheme = mailto;
...

Pytanie: W który plik w systemie plików określa, w jaki sposób ustawiona jest wartość LSHandlerRoleAll, np. com.apple.mail, jest podłączony do aktualnie uruchomionego programu, np. „Mail.app”?

Innymi słowy, jaka jest pełna ścieżka do plików systemowych, którymi manipuluje RCDefaultApp?

forthrin
źródło

Odpowiedzi:

1

Pełna ścieżka do pliku systemowego manipulowanego przez RCDefaultApp to:

~/Library/Preferences/com.apple.LaunchServices/com.apple.launchservices.secure.plist

(tj. jest to plik, o którym już wspomniałeś w pytaniu)

Jest to rzeczywisty plik, który Finder pyta (za pośrednictwem LaunchServices), aby znaleźć globalne preferencje dla aplikacji powiązanych z określonymi typami plików.

Wydaje się, że myślisz, że RCDefaultApp manipuluje jakimś innym plikiem, który wspomina wyraźnie „Mail.app” (tj. Faktycznie folder aplikacji dla aplikacji). Tak nie jest.

Zamiast tego Mail.app faktycznie przekazuje te informacje do systemu operacyjnego za pomocą pliku Info.plist w folderze aplikacji. Jest on skanowany po otwarciu aplikacji, dzięki czemu system wie o samej aplikacji i obsługiwanych typach plików.

W pliku Info.plist dla Mail.app znajdziesz, że definiuje on „CFBundleIdentifier” dla Mail.app na „com.apple.mail”. W ten sposób informacje z preferencji LaunchServices są „powiązane” z rzeczywistym Mail.app.

Ponadto definiuje obsługiwane typy treści wewnątrz Info.plist w CFBundleDocumentTypes, gdzie LSItemContentTypes zawiera na przykład com.apple.mail.emlx, com.apple.mail.mbox itp.

Zapewnia to na przykład, że nawet jeśli przeniesiesz Mail.app do innego folderu, system nadal będzie mógł uruchomić Mail.app po dwukrotnym kliknięciu pliku emlx na przykład w Finderze.

jksoegaard
źródło
Widzę! To wyjaśnia, dlaczego nie mogłem znaleźć żadnego śladu czegokolwiek zapisanego w jakimkolwiek pliku podczas wykonywania zmian w RCDefaultApp. Bardzo dobre wyjaśnienie! Dzięki!
forthrin