OS X: la ubicación paquete por el identificador de aplicación recién instalada

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

  •  13-09-2019
  •  | 
  •  

Pregunta

A pregunta similar a Localización de paquetes por identificador , pero diferente problema:

Tengo varias aplicaciones que necesitan para localizar los paquetes de cada uno por su identificación. Eso siempre funciona así, a menos que haga una instalación completamente nueva de todas mis aplicaciones. En muchos casos es suficiente para señalar el buscador a la ubicación de instalación de los lugares de paquete a ser conocido, pero a veces incluso eso no es suficiente; Tengo que ejecutar la aplicación en primer lugar antes de que sea paquete de ID se puede utilizar para encontrar el camino. Debo mencionar que estoy usando un instalador que copia las aplicaciones a la carpeta / Applications /, por lo que el buscador no se abre cuando instalo las aplicaciones.

Parece que cuando un paquete de aplicaciones se instala por primera vez, se necesita el sistema de algún tiempo antes de que algún registro interno se actualiza que mapea la ID de paquete a paquete de la ubicación. Lo que me gustaría saber es:

  1. donde se mantienen estas asignaciones y
  2. ¿Cómo puedo forzar el sistema / administrador de archivos / espacio de trabajo (?) Para actualizar el mapa
¿Fue útil?

Solución

Las asignaciones se mantienen en la base de datos servicios de lanzamiento. No hago que esto se almacena, pero la ubicación exacta es irrelevante, ya que hay mejores maneras de lograr su objetivo.

Puede actualizar manualmente la base de datos Launch Services en un número de maneras, pero personalmente, creo que hacerlo mediante programación sería más fácil, sobre todo en su situación. En ese caso, se debe utilizar los servicios de lanzamiento API-específicamente, me gustaría ver en el uso LSRegisterURL() , ya que parece lograr lo que quiere hacer.

Tome un vistazo a la Launch Services documentación para obtener más información sobre el registro de aplicaciones en la base de datos y cómo funciona todo esto en general.

Otros consejos

Una alternativa, en caso de que necesite una, sería la búsqueda de Spotlight uso de la API con el kMDItemCFBundleIdentifier clave:

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

Spotlight está estrechamente integrado con el sistema, de manera que los archivos / carpetas indexación tan pronto como se escriben en el sistema de archivos, que no debería tener ningún problema de la aplicación no haber sido indexados aún. Por supuesto, usted tiene que estar preparado para manejar más de una respuesta ...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top