क्या किसी को दिए गए बंडल पहचानकर्ता के साथ हर ऐप (फाइल सिस्टम में) खोजने के लिए एक अच्छा तरीका पता है? NSWorkspace
और लॉन्च सेवाएं आपको बंडल पहचानकर्ता द्वारा ऐप की तलाश करने देती हैं, लेकिन केवल एक ही परिणाम लौटाती हैं। मुझे संदेह है कि स्पॉटलाइट (NSMetadataQuery
) मदद कर सकता है, लेकिन मैं अपने एपीआई पर थोड़ा अस्पष्ट हूं, इसलिए मुझे यकीन नहीं है कि कोई उचित कुंजी है या नहीं।एक ही बंडल पहचानकर्ता के साथ एकाधिक ऐप्स कैसे खोजें?
कमांड लाइन lsregister
उपकरण (लॉन्च सर्विसेज.फ्रेमवर्क के अंदर) है, जिसे सिस्टम पर सबकुछ पंजीकृत करने के लिए कहा जा सकता है और फिर उसे जो भी पता है, उस पर एक रिपोर्ट डंप कर सकते हैं। उस पर निर्भर आदर्श से कम लगता है, क्योंकि यह अनियंत्रित है और इसके आउटपुट को पार्स करना दर्द हो सकता है।
(पृष्ठभूमि: मैं गेम मोडिंग के लिए एक ऐप बना रहा हूं, और यूजर को ओपन पैनल में पूरी फाइल सिस्टम के माध्यम से खोदने की आवश्यकता के बजाय समर्थित गेम की एक छोटी सूची से चुनने के लिए यूआई प्रदान करना चाहता हूं। हालांकि, मुझे उम्मीद है कि उपयोगकर्ता के पास स्थापित गेम की कई प्रतियां होंगी: रिलीज और बीटा, मॉडलिंग के लिए अतिरिक्त प्रतियां, आदि)
थोड़ा और अधिक कुशलता से, 'lsregister' को केवल * एक * चीज़ पंजीकृत करने के लिए कहा जा सकता है, और उसके बाद जो कुछ भी जानता है उस पर एक रिपोर्ट डंप करें। – JWWalker
आपने लॉन्च सर्विसेज का उल्लेख किया है, लेकिन आपको में LSCopyApplicationURLsForBundleIdentifier() को देखने से चूक जाना चाहिए। "लॉन्च सर्विसेज आपको बंडल पहचानकर्ता द्वारा ऐप की तलाश करने देती है, लेकिन केवल एक ही परिणाम लौटाती है" - आप किस फ़ंक्शन का जिक्र कर रहे थे? मेरा उत्तर देखें: http://stackoverflow.com/a/37153167/754997 –
@ChrisPage: वास्तव में, 10.7 समय सीमा में वापस मुझे यह याद करना होगा कि ऐप्पल केवल उस समारोह को पेश करेगा जो मुझे बाद में तीन ओएस एक्स संस्करणों की आवश्यकता है। – rickster