Ticket #238 (closed defect: fixed)
Conflicting COMBIA.dll references
Reported by: | jasper | Owned by: | jasper |
---|---|---|---|
Priority: | critical | Milestone: | Phase III |
Component: | COMBIA | Version: | |
Keywords: | Cc: |
Description
On one given system with a given user, two COBIA installations may be visible: the current user one and the all users one.
These may be different versions. The newest COBIA runtime is always loaded dynamically.
However, the full path to COMBIA.dll is in the COM registration of COBIA PMC classes in the registry. So one COM registration may point to the all users COMBIA.dll while another, used from the same process, may point to the current user COMBIA. These COMBIA.dlls may be different versions, and one of the implementations may depend on the newer COMBIA version. By chance, the older COMBIA version may have loaded first, and will be used for all instances.
To resolve this, there should be a COMBIA class factory place holder DLL that appears in the COM registry, which dynamically loads the newest COMBIA. Although this shifts the problem to the version of the COMBIA class factory DLL, this DLL is small and generic and not expected to change over time.
All this DLL does it implement wrappers for DllGetClassObject?, DllCanUnloadNow? and forward the functionality to the dynamically loaded COMBIA.dll.
Existing implementations are affected: the COM registration will need to be redone (to point to the class factory DLL instead of the COMBIA dll)
In [1ba3e09c81f6488f7b50c580c70f5f256eef970d]: