OS X: emplacement paquet par identifiant pour une application nouvellement installée

StackOverflow https://stackoverflow.com/questions/993244

  •  13-09-2019
  •  | 
  •  

Question

Une question similaire Localisation paquets par identifiant , mais différent problème:

J'ai plusieurs applications qui ont besoin de localiser des faisceaux de l'autre par leur carte d'identité. Cela fonctionne toujours bien, à moins que je fais complètement nouvelle installation de toutes mes applications. Dans de nombreux cas, il suffit d'indiquer le viseur à l'emplacement d'installation pour les emplacements de faisceau à être connu, mais parfois même cela ne suffit pas; Je dois exécuter la première application avant qu'il ne soit ID paquet peut être utilisé pour trouver le chemin. Je dois mentionner que j'utilise un programme d'installation qui copie les applications aux / Applications /, de sorte que le viseur s'ouvre jamais quand installer les applications.

Il semble que lorsqu'un paquet d'application est nouvellement installé, il faut le système un certain temps avant un certain registre interne est mis à jour qui mappe l'ID de paquet à l'emplacement du faisceau. Ce que je voudrais savoir est:

  1. où ces correspondances sont maintenues et
  2. comment puis-je forcer le système / gestionnaire / espace de travail fichier (?) Pour mettre à jour la carte
Était-ce utile?

La solution

Les correspondances sont conservés dans la base de données Launch Services. Je ne lorsque cela est stocké, mais l'emplacement exact est hors de propos, car il y a de meilleures façons d'atteindre votre objectif.

Vous pouvez mettre à jour manuellement la base de données de lancement des services dans un certain nombre de façons, mais personnellement, je pense que le fait, il sera plus facile programme, en particulier dans votre situation. Dans ce cas, vous utiliser les je regarderais Launch Services API spécifique, en utilisant LSRegisterURL() , puisque cela semble réaliser ce que vous voulez faire.

Jetez un oeil à la page Lancer la documentation des services pour plus d'informations sur l'enregistrement des applications dans la base de données et comment tout cela fonctionne en général.

Autres conseils

Une alternative, au cas où vous avez besoin, serait de rechercher à l'aide des API Spotlight avec le kMDItemCFBundleIdentifier touche:

pierre$39> mdfind "kMDItemCFBundleIdentifier == 'org.videolan.vlc'"
/Applications/VLC.app
/Applications/vlc-0.8.6c/VLC.app

Spotlight est étroitement intégré avec le système, de sorte que les fichiers / dossiers indexés dès qu'ils sont écrits dans le système de fichiers, vous ne devriez avoir aucun problème de l'application de ne pas avoir encore été indexé. Bien sûr, vous devez être prêt à gérer plus d'une réponse ...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top