แม้ว่าฉันได้ตั้งค่าตัวค้นหาอย่างชัดเจนให้แสดงนามสกุลไฟล์ทั้งหมด แต่ฉันก็ยังพบว่าแอพบางตัวไม่แสดงนามสกุลไฟล์ในผลลัพธ์ที่น่าสนใจ

นี่คือตัวอย่างบางส่วน.
ฉันวิ่ง Mountain Lion



แม้ว่าฉันได้ตั้งค่าตัวค้นหาอย่างชัดเจนให้แสดงนามสกุลไฟล์ทั้งหมด แต่ฉันก็ยังพบว่าแอพบางตัวไม่แสดงนามสกุลไฟล์ในผลลัพธ์ที่น่าสนใจ

นี่คือตัวอย่างบางส่วน.
ฉันวิ่ง Mountain Lion



คำตอบ:
โดยทั่วไปจะเป็นการแก้ไขข้อบกพร่องหรือข้อบกพร่องที่นำมาใช้ใน macOS 10.13 High Sierra: Spotlight ในตอนนี้เคารพการตั้งค่า Finder เพื่อแสดงนามสกุลไฟล์ การปิดใช้งานการตั้งค่านั้นจะลบส่วนขยาย. app ออกจาก Spotlight
ฉันรู้ว่านี่เป็นคำถามที่เก่ามาก แต่ฉันเพิ่งได้รับเดจาวูใน 10.13 High Sierra; แตกต่างจากอันนี้ แต่มีความคล้ายคลึงกันดังนั้นฉันจึงค้นหาและสะดุดกับคำถามนี้และนี่คือคำตอบของฉัน:
แอปอยู่ในไดเรกทอรีจริงที่แสดงราวกับว่าเป็นไฟล์เดียว Apple เรียกว่าบันเดิล (แม้ว่า Finder จะตั้งชื่อเป็น " Package " ใน " Show Package Contents " ในเมนูบริบท) แอปพลิเคชั่นไม่ได้เป็นเพียงชุดข้อมูลเท่านั้น Apple ใช้ชุดรวมสำหรับเฟรมเวิร์กส่วนขยายแอปพลิเคชันบริการ XPI แพคเกจติดตั้งบางประเภทรวมถึงรูปแบบการจัดเก็บข้อมูลหากข้อมูลที่เก็บประกอบด้วยหลายไฟล์ แต่จะปรากฏเป็นไฟล์เดียว เอกสาร RTF พร้อมรูปภาพสามารถจัดเก็บเป็นชุด RTFD) การรวมกลุ่มมักจะมีชื่อจริงชื่อของรายการไฟล์บนดิสก์ ดังนั้นหากไม่มีสิ่งอื่นที่จะแสดง macOS จะแสดงชื่อนั้นทุกที่
อย่างไรก็ตามบันเดิลมีไฟล์ข้อมูลภายในชื่อInfo.plistซึ่งมีข้อมูลเมตาทุกประเภทเกี่ยวกับบันเดิล สิ่งหนึ่งเช่นไฟล์ข้อมูลสามารถกำหนดเป็นชื่อที่แสดง หากมีการตั้งชื่อที่แสดง Finder จะแสดงชื่อที่แสดงไม่ใช่ชื่อจริงของไดเรกทอรี นั่นคือยกเว้นว่าไดเรกทอรีนั้นได้รับการตั้งชื่อใหม่ซึ่ง Finder สามารถตรวจพบว่าชื่อไดเรกทอรีไม่ตรงกับชื่อมัดในInfo.plistไฟล์ ฉันยอมรับว่ามันซับซ้อนเล็กน้อย ลองด้วยตัวอย่าง:
My App.appInfo.plistมีMy AppInfo.plistมีMy Cool Appด้วยการรวมกันนั้น Finder จะแสดงแอปเป็นMy Cool App.app(หรือเพียงแค่My Cool Appถ้าส่วนขยายถูกซ่อนอยู่) ตราบใดที่ชื่อ (1) และ (2) ตรงกันในชื่อ (3) จะปรากฏขึ้น
หากตอนนี้ฉันเปลี่ยนชื่อไดเรกทอรีเป็นMy Boring App.appFinder จะแสดงทันทีMy Boring App.appตั้งแต่ (1) และ (2) ไม่ตรงกับชื่อ (1) ปรากฏขึ้นราวกับว่าผู้ใช้ต้องการเปลี่ยนชื่อแอปของตน แน่นอน Finder ควรแสดงชื่อผู้ใช้ที่เลือกไม่สมเหตุสมผลใช่ไหม
ซับซ้อนพอแล้วใช่ไหม ฉันขอโทษ แต่ตอนนี้มันซับซ้อนยิ่งขึ้น ค่าทั้งหมดในInfo.plistที่มีการแสดงให้ผู้ใช้สามารถแปลเป็นภาษาท้องถิ่นดังนั้นหากระบบของคุณถูกตั้งค่าเป็นภาษาอังกฤษสหรัฐอเมริกาชื่อที่แสดงกำอาจจะแต่ถ้าระบบถูกตั้งไว้ที่ประเทศอังกฤษก็สามารถMy Cool App My Amazing Appหากมีการแปลเป็นภาษาท้องถิ่นของระบบค้นหา Finder จะแสดงการแปลนั้น แต่อีกครั้งเฉพาะในกรณีที่ชื่อ (1) และ (2) ตรงกันมิฉะนั้น (1) จะชนะอีกครั้ง
Localizing จะทำโดยการวาง.stringsไฟล์ลงในการรวมกลุ่มลงในไดเรกทอรีย่อยที่มีชื่อ<x>.lprojซึ่ง<x>ก็สามารถเป็นรหัสภาษาเช่นen.lprojภาษาอังกฤษ, fr.lprojฝรั่งเศส ฯลฯ แต่ในยังสามารถเป็นภาษา + ประเทศเช่นen_US.lproj, en_GB.lproj, en_AU.lprojและอื่น ๆ Inside เป็นชื่อไฟล์InfoPlist.stringsและไฟล์นี้สามารถแทนที่ค่าฐานของInfo.plistไฟล์ หากไม่พบการโลคัลไลซ์เซชันที่ตรงกันจะใช้ค่าจากการโลคัลไลเซชันฐาน (ชื่อพื้นที่พัฒนา ) ซึ่งกำหนดโดยInfo.plistไฟล์ หากไม่ได้กำหนดการแปลดังกล่าวค่าจากInfo.plistจะถูกใช้โดยตรง
สปอตไลท์จะทำงานเหมือน Finder หาก (1) และ (2) ตรงกับชื่อ (3) ปรากฏขึ้นโดยตรงหรือจากการแปลที่ตรงกัน หากไม่ได้ตั้งค่า (3) จะปรากฏ (1) แต่ต่างจาก Finder มันไม่ได้เพิ่ม.appส่วนขยายเสมอแม้ว่าจะถูกร้องขอใน Finder preferences ฉันไม่สามารถค้นหารูปแบบพฤติกรรมที่แน่นอนได้ แต่การรวมกันบางอย่างของการตั้งค่าจะป้องกันไม่ให้ Spotlight แสดงส่วนขยายไม่ว่าคุณจะกำหนดค่าไว้อย่างไร สำหรับผู้ใช้บางคนได้รับการแก้ไขโดยการเปลี่ยนการตั้งค่าการค้นหาแล้วทำงานsudo mdutil -E /ในTerminal(ซึ่งทุกอย่างดัชนีอีกครั้ง) แต่มันไม่ทำงานสำหรับผู้ใช้ทั้งหมดซึ่งอาจมีบางอย่างที่เกี่ยวข้องกับภาษา / ภูมิภาคที่เลือก
โดยทั่วไปมันเป็นข้อผิดพลาด การสร้างดัชนีใหม่แก้ไขไม่ได้หรือไม่สามารถแก้ไขได้ และพฤติกรรมนั้นเปลี่ยนไปโดย Apple ในการเปิดตัว macOS และคงที่หลังจากนั้น ... นั่นคือจนถึง 10.13 High Sierra ทุกแอปพลิเคชันของฉันมี.appส่วนขยายใน Spotlight ซึ่งตรงกับการตั้งค่า Finder ของฉันในขณะที่ใน 10.12 Sierra ไม่มีแอพที่มีส่วนขยายใน Spotlight แม้จะมีการตั้งค่า Finder ยกเว้นว่าฉันได้เปลี่ยนชื่อหรือไม่
ดูเหมือนว่าสิ่งนี้จะเกิดขึ้นเมื่อ Spotlight จัดทำดัชนีแอปก่อนที่การตั้งค่าเพื่อซ่อนส่วนขยายจะมีผล คุณควรลองทำดัชนีแอปพลิเคชันอีกครั้งเพื่อแก้ไขปัญหานี้
ไปที่แท็บความเป็นส่วนตัวในการตั้งค่า Spotlight และเพิ่มไดเรกทอรีแอปพลิเคชันไปยังสถานที่ที่ยกเว้น การดำเนินการนี้ควรลบแอปพลิเคชันทั้งหมดออกจากดัชนีสปอตไลท์ จากนั้นลบออกอีกครั้งจากสถานที่ที่ถูกยกเว้นเพื่อให้ Spotlight ทำดัชนีแอปพลิเคชันใหม่ด้วยการตั้งค่าที่ถูกต้อง หลังจากทำดัชนีส่วนขยาย ".app" ใหม่แล้วควรลบออกจากผลลัพธ์ทั้งหมด
มันจะแก้ปัญหา. app ทันที