Pregunta

Utilizamos archivos de manifiesto que ver COM sin registro, como también he detallados en los registros esta otra pregunta .

Ahora estamos tratando de utilizar COM sin registro con una aplicación que soporta plug-ins . Los plug-ins son archivos OCX que se pueden añadir a la carpeta principal de la aplicación después de la aplicación principal ya está instalado.

Sin embargo, eso significa que tendría que ser parcheado por el plug-in de instalación del archivo de manifiesto de la aplicación principal. Eso parece como una cosa peligrosa y propenso a errores que hacer, especialmente si varios plug-ins se pueden instalar.

¿Hay una manera de dividir de alguna manera el archivo de manifiesto de la aplicación principal, de modo que cada plug-in puede agregar con seguridad su propia parte como un archivo separado? U otra forma segura de parchear el archivo de manifiesto?

En caso de que sea relevante:. Creamos nuestros instaladores con Wix

¿Fue útil?

Solución

No recomendaría modificando el archivo de manifiesto de la aplicación; que parece bastante frágil y sólo funcionaría si vive en una ubicación grabable.

En el inicio del proceso, el manifiesto de una aplicación se utiliza para generar una "activación-contexto" que se empuja como el contexto de activación de todo el proceso. Pero cada hilo también tiene una pila de activación de contexto, que puede ser manipulado directamente. Las operaciones en un hilo dado se ven tanto en el contexto más alta en la pila y el contexto de activación de todo el proceso de la búsqueda de datos de registro COM.

La recomendación es que cualquier código del plugin necesita tiempo para poner en COM, un manifiesto-plugin específico debe ser activado en el hilo. Esto se puede hacer fácilmente más de una de dos maneras:

  1. Insertar el manifiesto-plugin específico como un ID2 manifiesto en el plugin y compilar con la macro ISOLATION_AWARE_ENABLED definidos. Esto básicamente envuelve APIs comunes de Windows que necesitan contexto de un manifiesto para activar y desactivar el contexto de activación adecuado alrededor de la llamada automáticamente.

  2. activar / desactivar el contexto de activación apropiada en el hilo alrededor de todos los puntos de entrada en el plugin. Esto se hace a través de la API de contexto de activación . Esto se hace más fácilmente con un objeto de gestión de contexto .

Otros consejos

Si está utilizando .Net, puede utilizar el código muestra en esta respuesta para cuidar de la activación contextos.

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