วิธีการตั้งค่าไอคอนสำหรับไฟล์บางประเภทคิดว่าทั้งระบบ?
ตัวอย่างเช่นฉันมีไฟล์ข้อความที่ลงท้ายด้วย. scala extension และฉันต้องการเชื่อมโยงไอคอนสำหรับไฟล์นั้นผ่านระบบทั้งหมดและสำหรับไฟล์ที่สร้างขึ้นใหม่ของส่วนขยายนี้
ขอบคุณ
วิธีการตั้งค่าไอคอนสำหรับไฟล์บางประเภทคิดว่าทั้งระบบ?
ตัวอย่างเช่นฉันมีไฟล์ข้อความที่ลงท้ายด้วย. scala extension และฉันต้องการเชื่อมโยงไอคอนสำหรับไฟล์นั้นผ่านระบบทั้งหมดและสำหรับไฟล์ที่สร้างขึ้นใหม่ของส่วนขยายนี้
ขอบคุณ
คำตอบ:
ไอคอนสำหรับประเภทไฟล์ได้รับการจัดการโดย Launch Services (บริการกำหนดเหนือสิ่งอื่นใดซึ่งแอปพลิเคชันจัดการกับชนิดไฟล์) ไอคอนไฟล์มีให้โดยการจัดการแอปพลิเคชันการเปิดไฟล์ตามค่าเริ่มต้นเสมอ วิธีนี้เช่นดูตัวอย่างจะมีไอคอน PDF เป็นค่าเริ่มต้นและไอคอน PNG แต่หากคุณเปลี่ยนไฟล์ PNG ทั้งหมดเพื่อเปิดโดยใช้ Pixelmator แทนไฟล์เหล่านี้จะได้รับไอคอนสไตล์ Pixelmator หลังจากนั้น
สิ่งที่คุณต้องทำคือการเพิ่มการกำหนดประเภทไฟล์ของคุณไปยังโปรแกรมประยุกต์ที่เปิดได้โดยเริ่มต้นหรือสร้างเอง "จำลอง" แอพลิเคชันของคุณสำหรับประเภทของไฟล์
ตัวอย่างเช่นระบบของฉันยังไม่ทราบ.scalaและฉันต้องการTextMateจัดการกับมัน
ครั้งแรกผมแสดงบรรจุภัณฑ์ของTextMate.appนำทางไปContents/และเปิดInfo.plistทั้งที่มีโปรแกรมแก้ไขข้อความหรือProperty List Editorส่วนหนึ่งของแอปเปิ้ลเครื่องมือสำหรับนักพัฒนา
TextMate ใช้รูปแบบที่ผิดปกติสำหรับInfo.plist(โดยปกติคือไบนารีหรือ XML) ข้อความที่ตัดตอนมาซึ่งมีลักษณะดังนี้:
CFBundleDocumentTypes = (
{ CFBundleTypeName = "ADA source";
CFBundleTypeExtensions = (adb, ads);
CFBundleTypeIconFile = ADA;
},
คีย์หลักCFBundleDocumentTypesคือสิ่งที่เราต้องการ อิลิเมนต์ลูกแรกขององค์ประกอบนั้นล้อมรอบด้วยเครื่องหมายปีกกาประกอบด้วยคำจำกัดความชนิดไฟล์พร้อมชื่อ (สำหรับคอลัมน์ประเภทไฟล์ใน Finder) นามสกุลไฟล์และชื่อไฟล์ไอคอน ( ADAสำหรับTextMate.app/Contents/Resources/ADA.icns)
เพื่อรองรับ.scalaเราจำเป็นต้องเพิ่มองค์ประกอบพี่น้องคล้ายกับองค์ประกอบด้านบนภายใต้องค์ประกอบหลักเดียวกันCFBundleDocumentTypes:
CFBundleDocumentTypes = (
{ CFBundleTypeName = "ADA source";
CFBundleTypeExtensions = (adb, ads);
CFBundleTypeIconFile = ADA;
},
{ CFBundleTypeName = "Scala source";
CFBundleTypeExtensions = (scala);
CFBundleTypeIconFile = ADA;
},
เพื่อประโยชน์ของความเรียบง่ายผมใช้ไฟล์ไอคอนเดียวกัน แต่เราสามารถสร้างตัวเองคัดลอกไปTextMate.app/Contents/Resources/SCALA.icnsและเรียกมันว่าในSCALAInfo.plist
ตอนนี้ให้ปิด TextMate หากใช้งานอยู่ย้ายแอปพลิเคชั่นTextMate.appไปยังโฟลเดอร์อื่นแล้วเปิดใหม่ ปิดแล้วเลื่อนกลับจากนั้นเปิดอีกครั้ง สิ่งนี้จะทำเพื่อเปิดบริการรับการเปลี่ยนแปลงที่Info.plistเราเพิ่งดำเนินการ
ผลลัพธ์จะมีลักษณะเช่นนี้ (โปรดจำไว้ว่าเราใช้ไอคอน TextMate Ada ซ้ำสำหรับ.scala):

หากคุณไม่ต้องการเชื่อมโยงแอปพลิเคชันเพื่อเปิด.scalaไฟล์ (ไม่สามารถจินตนาการได้ว่าทำไม แต่มีวิธีการทำเช่นนี้): เปลี่ยนการเพิ่มไปยังไฟล์เป็นต่อไปนี้:
{ CFBundleTypeName = "Scala source";
CFBundleTypeExtensions = (scala);
CFBundleTypeIconFile = ADA;
CFBundleTypeRole = "None";
},
ตอนนี้แอปพลิเคชั่นจะประกาศประเภทไฟล์ แต่บอกระบบว่าไม่ทราบวิธีจัดการ (แอปเปิ้ลให้ตัวอย่างของ Finder ที่ประกาศประเภทฟอนต์แม้ว่ามันจะไม่สามารถเปิดได้)
* โปรดทราบว่าการกำหนดแอปพลิเคชันถาวรให้กับประเภทไฟล์จะแทนที่ไอคอนซึ่งอาจเป็นชนิด "เอกสารที่ไม่รู้จัก"
หากคุณมีแอปพลิเคชันเชื่อมโยงอยู่.scalaแล้วและต้องการเปลี่ยนไอคอนไฟล์โดยไม่เปลี่ยนแอปพลิเคชันที่เกี่ยวข้อง:
เปิดของแอพลิเคชันของInfo.plistรูปลักษณ์สำหรับรายการประเภทไฟล์ในและได้รับCFBundleDocumentTypes CFBundleTypeIconFileแก้ไขไฟล์นี้.../Contents/Resources/และควรจะปรากฏใน Finder หลังจากนั้นไม่นาน
ข้อมูลโบนัส:
วิธีเปลี่ยนไอคอนเอกสารหรือโฟลเดอร์เดียวเป็นไฟล์ภาพ
สมมติว่าคุณมีภาพ~/Desktop/test.pngที่คุณต้องการใช้ไอคอน (เป็นภาพหน้าจอที่ใช้ด้านบนเพื่อแสดง.scalaไอคอน / TextMate / Ada เปลี่ยนไป
เปิด/Applications/Utilities/Terminal.appและป้อน:
sips -i ~/Desktop/test.png
นี่จะเปลี่ยนtest.pngไอคอนไฟล์เป็นรูปภาพ เนื่องจากฉันสนุกกับการสอบถามซ้ำลองทำสิ่งนี้:
ก่อนหน้านี้pngไอคอนแสดงตัวอย่างแบบธรรมดา(ภาพตัวอย่างจะถูกปิดใช้งาน):

หลังจากนั้นไฟล์ภาพเองนั้นเป็นตัวอย่าง:

ตอนนี้เราสามารถเปิดกล่องโต้ตอบรับข้อมูลคลิกไอคอนเอกสารในอนาคตที่ต้องการด้านบนซ้ายCmd-Cเพื่อคัดลอกเปิดกล่องโต้ตอบรับข้อมูลไฟล์คลิกไอคอนเอกสารปัจจุบันที่ไม่พึงประสงค์ที่มุมบนซ้ายและCmd-Vวาง ไอคอนที่เราต้องการ
หรือคุณสามารถเปิดไฟล์รูปภาพที่คุณต้องการใช้เป็นไอคอนใน Preview Cmd-Aเพื่อเลือกทั้งหมดCmd-Cเพื่อคัดลอกรูปภาพไปยังคลิปบอร์ด จากนั้นเปิดไดอะล็อกGet Infoของเอกสารเป้าหมายเลือกไอคอนเพื่อเปลี่ยนที่มุมบนซ้ายและCmd-Vวางภาพเหนือ
codesign --verify --verbose /Applications/TextMate.appหรืออะไรที่เหมือนกัน หากไม่ถูกต้องให้ทำเช่นนี้กับแอปพลิเคชันที่ต้องการข้อยกเว้นในไฟร์วอลล์หรือต้องการ Keychain ฉันไม่แน่ใจว่าสิ่งใดที่จะแย่ไปกว่านั้นโดยทำตัวยุ่งกับลายเซ็น (+1 สำหรับรายละเอียด!)
touchใช้ระดับรูทของบันเดิลเพื่ออัปเดตวันที่แก้ไข จากนั้นใน Finder ให้ยกเลิกการเลือกและเลือกแอปพลิเคชั่น / บันเดิล / แพ็คเกจอีกครั้งและเมื่อพบว่าวันที่แก้ไขนั้นช้ากว่าข้อมูลแคชในฐานข้อมูล Launch Services มันจะลงทะเบียนอีกครั้งเพื่อรับรู้การเปลี่ยนแปลงใด ๆ คุณได้ทำ
TextMate.app: code object is not signedฉันไม่ต้องการทำสิ่งนั้นอีก ฉันคิดว่ามันเป็นปัญหาจริง แต่ฉันไม่ได้คิด แก้ไข : ในความคิดที่สองแป้นพิมพ์ลัดแบบกำหนดเองจะถูกจัดเก็บInfo.plistด้วยเช่นกัน นั่นอาจไม่ใช่ปัญหาจริง ๆ ถ้าสิ่งนั้นไม่ใช่ ปัญหาเดียวอาจเป็นการเพิ่มไฟล์ไอคอนเพิ่มเติมภายในชุดแอป
คุณต้องแทนที่ไฟล์ ICNS ภายในโปรแกรมที่กำหนดให้เป็นโปรแกรมเริ่มต้นสำหรับประเภทไฟล์เฉพาะ
1 - สร้างภาพสำหรับไอคอนที่ต้องการจากนั้นบันทึกเป็นไฟล์ png (png รองรับความโปร่งใส)
2 - แปลงไฟล์ png เป็นประเภทไฟล์ icns (FastIcns นั้นยอดเยี่ยมมากและฟรี)
3 - คลิก CMD หรือคลิกขวาที่แอปพลิเคชันที่ตั้งค่าเป็นแอปเริ่มต้นสำหรับประเภทไฟล์เฉพาะจากนั้นเลือกแสดงเนื้อหาของแพ็คเกจ
4 - มองหาไฟล์ icns ที่แอปพลิเคชันกำหนดให้เป็นไอคอนสำหรับประเภทไฟล์เฉพาะมันอาจจะอยู่ในโฟลเดอร์ชื่อทรัพยากร
5 - ตั้งชื่อไฟล์ icns ที่คุณสร้างชื่อไฟล์เดียวกับที่คุณต้องการแทนที่
6 - คัดลอกและวางหรือลากและวางไฟล์ icns ใหม่ที่คุณสร้างไว้ในโฟลเดอร์ที่ไฟล์ที่คุณต้องการแทนที่นั้นอยู่และเลือกแทนที่เมื่อได้รับตัวเลือก
7 - เสร็จแล้ว! ไอคอนทั้งหมดสำหรับประเภทไฟล์นั้นถูกแทนที่ด้วยไอคอนใหม่ที่ต้องการ
วิธีที่ฉันทำเกี่ยวกับเรื่องนี้คือการหาไฟล์ที่มีนามสกุลนั้นคลิกขวา»รับข้อมูลหรือ Command-i จากนั้นจะดึงแผงข้อมูลขึ้นมา ที่ด้านบนคุณจะเห็นไอคอนที่ใช้สำหรับภาพในปัจจุบัน คุณสามารถลากไฟล์รูปภาพไปยังไฟล์นั้นเพื่อเปลี่ยนหรือถ้าคุณคัดลอกรูปภาพคุณสามารถคลิกที่รูปภาพที่คุณต้องการเปลี่ยนและทำการวางเพื่อเปลี่ยนแปลง