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, если только я не переименовал его или если у меня не было нескольких копий, лежащих вокруг.