यूटीआई और लॉन्च सेवा
"ज्ञात" फ़ाइल प्रकारों की सूची कहाँ संग्रहीत है?
"फ़ाइल प्रकार" के लिए आधिकारिक शब्द
यूनिफ़ॉर्म टाइप आइडेंटिफ़ायर
(यूटीआई) है, और लॉन्च सेवाओं द्वारा यूटीआई के डेटाबेस को बनाए रखा गया है
।
टर्मिनल का उपयोग करके , आप lsregister
उपकरण का उपयोग करके लॉन्च सेवा डेटाबेस की सामग्री देख सकते हैं , जो यहां संग्रहीत है:
/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister
हर बार जब आप चलाना चाहते हैं lsregister
, तो उस लंबे रास्ते को निर्दिष्ट करने के बजाय , आप अस्थायी रूप से अपनी निर्देशिका को अपने में जोड़ सकते हैं PATH
:
PATH=/System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support:"$PATH"
और फिर आप lsregister
केवल दर्ज करके चला सकते हैं :
lsregister
लॉन्च सेवा डेटाबेस की सामग्री देखने के लिए:
lsregister -dump
नई यूटीआई की घोषणा
क्या ओएस एक्स को नई फ़ाइल प्रकारों को पहचानने का एक तरीका है?
यह एप्पल का लेख,
"नई यूनिफॉर्म टाइप पहचानकर्ताओं की घोषणा" , यह कैसे करना है पर उपयोगी जानकारी प्रदान करता है। यहाँ पूरी प्रक्रिया है:
1. एक डमी एप्लिकेशन बनाएं
लॉन्च सेवाओं के साथ पंजीकरण करने के लिए एक डमी एप्लिकेशन बनाएं:
- AppleScript Editor खोलें (OS X के यूटिलिटीज फ़ोल्डर में स्थित )।
- एक नई खाली स्क्रिप्ट को कहीं पर सहेजें (जैसे: आपके डेस्कटॉप पर), इसकी फ़ाइल प्रारूप को अनुप्रयोग में सेट करना ।
2. इसकी Info.plist फ़ाइल खोलें
- खोजक में अपने नए डमी आवेदन का पता लगाएँ।
- उस पर राइट-क्लिक करें, और पॉपअप मेनू से शो पैकेज सामग्री का चयन करें ।
- इसका Contents फ़ोल्डर खोलें ।
- पाठ संपादक में Info.plist फ़ाइल खोलें (जैसे: TextEdit )।
3. अपना नया यूटीआई जोड़ें
दो कुंजी का विकल्प है:
UTExportedTypeDeclarations
- अपने स्वयं के कस्टम फ़ाइल नाम एक्सटेंशन के लिए।
UTImportedTypeDeclarations
- फाइल एक्सटेंशन के लिए जो पहले से मौजूद है लेकिन OS X द्वारा मान्यता प्राप्त नहीं है।
वह कुंजी चुनें जो आपकी आवश्यकताओं के लिए सबसे उपयुक्त हो।
फिर अंतिम दो पंक्तियों से पहले Info.plist फ़ाइल में, </dict></plist>
इस कोड को जोड़ें:
<key>KEY</key>
<array>
<dict>
<key>UTTypeIdentifier</key>
<string>IDENTIFIER</string>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename-extension</key>
<array>
<string>EXTENSION</string>
</array>
</dict>
</dict>
</array>
निम्नलिखित परिवर्तन करना:
- बदलें
KEY
अपनी चुनी कुंजी के साथ (या तो UTExportedTypeDeclarations
या UTImportedTypeDeclarations
)।
IDENTIFIER
एक उपयुक्त रिवर्स-डीएनएस पहचानकर्ता के साथ बदलें :
- निर्यातित - कुछ इस तरह
com.mycompany.mytype
- आयातित - आईडी सॉफ्टवेयर के
डूम WAD प्रारूप के लिए, एक उपयुक्त पहचानकर्ता होगा
com.idsoftware.wad
EXTENSION
फ़ाइल नाम एक्सटेंशन (प्रमुख बिंदु के बिना) के साथ बदलें , जैसे wad
:।
अपने नए यूटीआई को स्वीकार करने के लिए लॉन्च सेवाओं के लिए यह आवश्यक न्यूनतम कोड है। आप निम्न वैकल्पिक गुण भी जोड़ सकते हैं:
UTTypeConformsTo
- नीचे परिशिष्ट देखें।
UTTypeDescription
- एक उपयोगकर्ता-दृश्यमान विवरण, जिसे फाइंडर में प्रदर्शित किया जाएगा।
UTTypeIconFile
- यदि आप अपने डमी एप्लिकेशन में सामग्री / संसाधन फ़ोल्डर में एक ऐप्पल आइकन छवि
फ़ाइल जोड़ते हैं, और इस संपत्ति में उसका फ़ाइल नाम जोड़ते हैं, तो जिन फ़ाइलों में आपका नया फ़ाइल नाम एक्सटेंशन है, वे इस आइकन का उपयोग करेंगे।
UTTypeReferenceURL
- इस प्रकार का वर्णन करने वाले संदर्भ दस्तावेज़ का URL।
यहां सभी वैकल्पिक गुणों को दर्शाने वाला एक संपूर्ण उदाहरण दिया गया है:
<key>UTImportedTypeDeclarations</key>
<array>
<dict>
<key>UTTypeIdentifier</key>
<string>com.idsoftware.wad</string>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename-extension</key>
<array>
<string>wad</string>
</array>
</dict>
<key>UTTypeConformsTo</key>
<array>
<string>public.data</string>
</array>
<key>UTTypeDescription</key>
<string>Doom WAD file</string>
<key>UTTypeIconFile</key>
<string>DoomWAD.icns</string>
<key>UTTypeReferenceURL</key>
<string>http://en.wikipedia.org/wiki/Doom_WAD</string>
</dict>
</array>
4. लॉन्च सेवाओं के साथ अपने नए यूटीआई को पंजीकृत करें
इस कमांड को टर्मिनल में चलाएं:
lsregister <PATH_TO_APP>
<PATH_TO_APP>
आपके डमी एप्लिकेशन के पथ के साथ प्रतिस्थापित करना, जैसे:
lsregister ~/Desktop/MyDummyApp.app
यदि आप अब अपने नए फ़ाइलनाम एक्सटेंशन के साथ एक फ़ाइल बनाते हैं, और फिर इसे फाइंडर में चुनें और हिट करें Enter, तो फाइंडर को स्वचालित रूप से केवल फ़ाइल नाम वाले हिस्से का चयन करना चाहिए, न कि एक्सटेंशन का।
यदि आप लॉन्च सेवा डेटाबेस की सामग्री देखते हैं:
lsregister -dump
आपको अपना नया यूटीआई सूचीबद्ध होना चाहिए:
type id: 50364
bindableKey: 12608
generation: 1
uti: com.idsoftware.wad
description: Doom WAD file
flags: imported active apple-internal untrusted
icon: DoomWAD.icns
conforms to: public.data
tags: .wad
यदि आप बाद में अपनी नई UTI को अपंजीकृत करना चाहते हैं, तो निम्न -u
विकल्प पास करें lsregister
:
lsregister -u ~/Desktop/MyDummyApp.app
परिशिष्ट: यूटीआई पदानुक्रम और अनुरूपता
ओएस एक्स यूटीआई की पदानुक्रम की घोषणा करता है जो यहां सूचीबद्ध हैं:
सिस्टम-घोषित वर्दी प्रकार पहचानकर्ता ।
यहाँ पदानुक्रम में कुछ यूटीआई हैं:
public.content
public.text
public.rtf
public.html
public.xml
public.plain-text
public.source-code
public.c-source
public.c-header
com.sun.java-source
public.image
public.jpeg
public.tiff
public.png
public.audiovisual-content
public.movie
public.audio
प्रत्येक यूटीआई "इसके मूल यूटीआई" के अनुरूप है:
उदाहरण के लिए, यूटीआई public.html
, जो HTML पाठ को परिभाषित करता है, आधार पाठ पहचानकर्ता के अनुरूप है public.text
। इस मामले में, अनुरूपता उन अनुप्रयोगों को अनुमति देती है जो सामान्य पाठ फ़ाइलों को HTML फ़ाइलों की पहचान कर सकते हैं क्योंकि वे इसे भी खोल सकते हैं। ( संदर्भ )
एक नया यूटीआई बनाते समय, UTTypeConformsTo
मौजूदा यूटीआई में से एक को संपत्ति सेट करना एक अच्छा विचार है ।
उदाहरण के लिए, अगर अपने नए यूटीआई स्रोत कोड का एक प्रकार है, तो आप स्थापित करना चाहिए UTTypeConformsTo
करने के लिए संपत्ति public.source-code
, इतना है कि यह जो खोल सकते हैं तो कोई भी एप्लिकेशन द्वारा खोला जा सकता
public.source-code
या public.plain-text
या public.text
फ़ाइलें।
CFBundleTypeExtensions
एक विरासत कुंजी है जो OS X 10.5 में पदावनत हो गई । 2007 के बाद से पसंदीदा तरीका नए यूटीआई घोषित करना है, जैसा कि यहां बताया गया है और मेरे उत्तर में वर्णित है ।