TL; DR
По сути, это ошибка или исправление, появившееся в macOS 10.13 High Sierra: Spotlight теперь учитывает настройку Finder для отображения расширений файлов. Отключение этого параметра удаляет расширение .app из Spotlight.
Полный ответ
Я знаю, что это очень старый вопрос, но у меня только что была дежа-вю в 10.13 Высшая Сьерра; отличается от этого, но с некоторыми сходствами, поэтому я искал его и наткнулся на этот вопрос, и вот мой ответ:
Приложения на самом деле каталоги отображаются так, как если бы они были одним файлом; Apple называет это пакетом (несмотря на то, что Finder называет его « Пакет », как в « Показать содержимое пакета » в контекстном меню). Не только приложения являются пакетами, Apple использует пакеты также для платформ, плагинов, расширений приложений, служб XPI, определенных видов пакетов установки, а также формата хранения данных, если хранимые данные состоят из нескольких файлов, но должны отображаться как один файл (например, RTF-документ с изображениями может быть сохранен как пакет RTFD). Пакеты всегда имеют реальное имя, имя файла записи на диске. Поэтому, если отображать больше нечего, macOS отображает это имя везде.
Однако в пакетах есть информационный файл с именем named Info.plist
, который содержит все виды метаданных о пакете. Одна вещь, которую такой информационный файл может определить - это отображаемое имя . Если такое отображаемое имя установлено, Finder отобразит отображаемое имя, а не реальное имя каталога. То есть, если каталог не был переименован, что Finder может обнаружить, если имя каталога не совпадает с именем пакета в Info.plist
файле. Ну, я признаю, это немного сложно. Давайте попробуем это на примере:
- Каталог называется
My App.app
- Имя пакета в
Info.plist
этоMy App
- Расслоением отображаемое имя в
Info.plist
этоMy Cool App
С этой комбинацией Finder покажет приложение как My Cool App.app
(или просто, My Cool App
если расширения скрыты). Пока (1) и (2) совпадают по имени, отображается (3).
Если я теперь переименую каталог в My Boring App.app
, то Finder отобразит его My Boring App.app
так, как только, если (1) и (2) не совпадают по имени, отобразится (1), как будто пользователь хочет, чтобы его / ее приложение было переименовано, из Конечно, Finder должен отображать выбранное пользователем имя, имеет смысл, не так ли?
Уже достаточно сложно? Ну, извини, но теперь все становится еще сложнее. Все значения в Info.plist
, которые отображаются для пользователей, могут быть локализованы , поэтому, если ваша система настроена на американский английский, отображаемое имя пакета может быть My Cool App
, но если система установлена на британский английский, это может быть My Amazing App
. Если для текущего системного языка существует локализация, Finder отобразит эту локализацию, но снова, только если совпадают имена (1) и (2), в противном случае (1) снова победит.
Локализация осуществляется путем размещения .strings
файлов в пучках на подгруппы каталогов, которые названы <x>.lproj
, где <x>
только может быть код языка, например en.lproj
на английском языке, fr.lproj
на французском языке, и т.д. Но также может быть язык + страна, как en_US.lproj
, en_GB.lproj
, en_AU.lproj
и так далее. Внутри находится файл с именем, InfoPlist.strings
и этот файл может переопределять базовые значения Info.plist
файла. Если соответствующая локализация не найдена, используются значения из базовой локализации (называемой областью разработки ), которая также определяется Info.plist
файлом. Если такая локализация не определена, значения из Info.plist
используются напрямую.
Прожектор ведет себя как Finder, если совпадение (1) и (2) в имени (3) отображается либо непосредственно, либо из соответствующей локализации. Если (3) не установлено, отображается (1). Но в отличие от Finder он не всегда добавляет .app
расширение, даже если запрашивается в настройках Finder. Мне не удалось найти точную модель поведения, но определенная комбинация настроек не позволит Spotlight показывать расширение, независимо от того, что вы настроили. Для некоторых пользователей это фиксируется путем изменения настроек Finder , а затем работает sudo mdutil -E /
в Terminal
(который снова индексах всего). Но это работает не для всех пользователей, которые могут иметь отношение к выбранному языку / региону.
В основном это ошибка. Либо реиндексация исправляет это, либо это не может быть исправлено. И поведение Apple было изменено в какой-то версии macOS и после этого оставалось неизменным ... то есть до 10.13 High Sierra. Внезапно все мои приложения имеют .app
расширение в Spotlight, которое соответствует моим настройкам Finder, тогда как в 10.12 Sierra ни одно приложение не имело расширения в Spotlight, несмотря на настройку Finder, если только я не переименовал его или если у меня не было нескольких копий, лежащих вокруг.