Qualcuno sa di un buon modo per trovare (nel filesystem) ogni app con un determinato identificatore di bundle? NSWorkspace
e Servizi di avvio consentono di cercare un'app per identificatore di gruppo, ma restituiscono solo un singolo risultato. Sospetto che Spotlight (NSMetadataQuery
) possa essere d'aiuto, ma sono un po 'poco chiaro sulla sua API, quindi non sono sicuro che ci sia una chiave appropriata.Come trovare più app con lo stesso identificatore di bundle?
C'è lo strumento da riga di comando lsregister
(all'interno di LaunchServices.framework), che può essere detto di (ri) registrare tutto sul sistema e quindi scaricare un report su tutto ciò che sa. Affidarsi a ciò sembra non essere l'ideale, dal momento che non è documentato e l'analisi della sua produzione potrebbe essere un problema.
(Sfondo: sto creando un'applicazione per il modding del gioco e voglio fornire un'interfaccia utente per scegliere rapidamente da un breve elenco di giochi supportati piuttosto che richiedere all'utente di scavare attraverso l'intero filesystem in un pannello aperto. Mi aspetto che sia molto probabile che un utente abbia più copie di un gioco installato: versione beta e, copie extra per modding, ecc.)
Un po 'più efficientemente, 'lsregister' può essere detto di (re) registrare solo * una * cosa, e quindi scaricare un report su tutto ciò che sa. – JWWalker
Hai citato i servizi di lancio, ma devi aver perso la vista di LSCopyApplicationURLsForBundleIdentifier() in. "I servizi di lancio ti consentono di cercare un'app per identificatore di gruppo, ma restituiscono solo un singolo risultato", a quale funzione ti riferivi? Vedere la mia risposta: http://stackoverflow.com/a/37153167/754997 –
@ChrisPage: in effetti, tornando nel tempo di 10.7, mi sono perso vedendo che Apple introdurrebbe solo la funzione che ho bisogno di tre versioni OS X successive. – rickster