Notas sobre la compatibilidad en componentes ActiveX.

 

Nota del 01/Jul/2000 sobre la COMPATIBILIDAD BINARIA: (revisado el 28/Feb/2004)



 

Notas sobre la compatibilidad en componentes ActiveX.
----------------------------------------------------------

Para no romper la compatibilidad de versiones:

  • Al crear la librería (DLL) la primera vez: hacerlo con compatibilidad de proyecto.

  • Hacer una copia de la DLL creada y renombrarla (esto no es obligatorio, pero recomendable),
    por ejemplo con la extensión .dlc o .cmp (yo uso esta última)

  • Al crear nuevas versiones, con nuevas propiedades y métodos, 
    hacerlo con compatibilidad binaria, apuntando a la copia creada con la nueva extensión.
    De esta forma, los programas compilados anteriormente siguen funcionando con la nueva DLL.

  • Copiar la nueva DLL con la extensión usada en la compatibilidad binaria.
    La copia creada con la nueva extensión, será siempre la última versión distribuida de la DLL

  • En muy importante que siempre que distribuyamos una DLL, aunque se hayan hecho cambios mínimos que no rompan la compatibilidad binaria con la anterior, hagamos una copia para usarla como "base" de la compatibilidad binaria, (con la extensión .cmp).
    De esta forma, siempre tendremos la DLL distribuida como base de compatibilidad binaria.
    Si no tenemos en cuenta este "pequeño" detalle, al distribuir la nueva DLL nos encontraremos con el error de que "no puede crear el componente ActiveX" y por tanto "romperemos" la compatibilidad binaria y tendremos que generar nuevamente los ejecutables que utilicen nuestro componente ActiveX.
     

Todo esto es necesario para que se conserven las interfaces anteriores y las nuevas.
Los programas anteriores usarán la interface antigua y los nuevos la nueva.
Si se modifica demasiado la DLL al final el registro estará "abarrotado" de interfaces de 
nuestra DLL... así que si se pretende hacer un cambio "brusco", lo recomendable es crear una
nueva DLL con una versión diferente, pero de esta forma los programas anteriores no funcionarán
con la nueva DLL... habría que volver a compilarlos.

 

En resumen: Hacer una copia de la última DLL distribuida y usarla para la compatibilidad binaria, (antes yo la hacía con la original y así me ha ido... en fin...)


ir al índice