TL; DR
В основному, це виправлення помилок або помилок, введених у macOS 10.13 High Sierra: Spotlight тепер поважає налаштування Finder для показу розширень файлів. Якщо вимкнути цей параметр, вилучення .app розширюється із прожектора.
Повна відповідь
Я знаю, що це дуже давнє питання, але у мене просто було дежа-ву в 10.13 Високій Сьєррі; відрізняється від цього, але з деякою схожістю, тому я шукав його і натрапив на це питання, і ось моя відповідь:
Насправді програми відображаються так, ніби вони є одним файлом; Apple закликає цей пакет (незважаючи на те, що Finder назвав його " Package ", як у " Show Contents Package " у контекстному меню). Не тільки програми - це пакети, Apple використовує пакети також для фреймворків, плагінів, розширень додатків, служб XPI, певного типу пакетів інсталятора, а також формату зберігання даних, якщо збережені дані складаються з декількох файлів, але мають відображатися як один файл (наприклад, документ RTF із зображеннями може зберігатися у вигляді пакету RTFD). Пакети завжди мають справжнє ім'я, назву запису файлу на диску. Тож якщо більше нічого немає для відображення, macOS відображає цю назву скрізь.
Однак у пакетах всередині є інформаційний файл, названий Info.plist
, який містить всі види метаданих про пакет. Одне, що такий інформаційний файл може визначити - це ім'я відображення . Якщо таке відображуване ім'я встановлено, Finder відображатиме відображуване ім'я, а не справжнє ім'я каталогу. Тобто, якщо каталог не перейменований, який Finder може виявити, якщо ім'я каталогу не відповідає імені пакета у Info.plist
файлі. Ну, зізнаюся, це трохи складно. Спробуємо це на прикладі:
- Каталог названий
My App.app
- Ім'я пакета в
Info.plist
ІБMy App
- Дисплей ім'я пакета в
Info.plist
ISMy 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, якщо я не перейменував його або якщо у мене не було декількох примірників, що лежать навколо.