Pregunta

Estamos utilizando un modelo de automatización de objetos COM para que nuestra aplicación esté disponible para nuestros clientes.

Se están utilizando en su mayor parte en Python para acceder a nuestra interfaz de aplicación.

Como queremos poder instalar (aún no se ejecutan, ese es otro problema) versiones diferentes de la aplicación, estamos cambiando nuestros componentes COM para que estén libres de errores.

Pero eso entra en conflicto con el acceso desde los lenguajes de scripting a través de la automatización de IDispatch ya que necesitan las entradas en el registro.

Nuestro enfoque es crear una aplicación que administre la versión activa de nuestra aplicación real. Permite al usuario decidir qué versión desea tener y se ocupa de las entradas del registro.

¿Cuáles son las alternativas a nuestro enfoque?

¿Fue útil?

Solución

Hay un protocolo dentro de COM para hacer esto. Si versionas las Interfaces (y cambias los GUID para cada versión) puedes instalar múltiples versiones. Microsoft hace esto con WORD, etc.

Es posible crear una clase Word.Document.5 que sea específica para la versión 5 de la biblioteca, o simplemente word.Document que creará una instancia del máximo presente en la máquina. No estoy seguro de si esta funcionalidad está incorporada en COM o si se debe mejorar, pero vale la pena investigarla.

Otros consejos

Se puede acceder a

Regfree COM objetos a través de Microsoft. Objeto Windows.ActCtx .

En cuanto a la automatización de IDispatch que requiere entradas en el registro, eso no es estrictamente correcto. Supongo que está utilizando la implementación predeterminada de ATL, IDispatchImpl. Resolvimos esta solución proporcionando nuestra propia implementación, IRegFreeDispatchImpl, que usaba API de manipulación de contexto de activación en forma se sugiere aquí para incluir todos los puntos de entrada en la DLL con una activación / desactivación de contexto de activación.

Bueno, la respuesta es sugerida por ti mismo. Puede escribir una aplicación que tenga una lista completa de todas las versiones de componentes COM. Una vez que el usuario selecciona una versión, puede llamar a la aplicación regsvr32 para registrar esa versión en particular.

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