Implementing .DLL Isolation with an .EXE using Wise Package Studio
If your application works only with certain version of a DLL -- but your computer has the same DLL with higher version -- here's a possible work around.
DLL Isolation is used when an application needs a specific version of a shared DLL for it to work. What it does is to copy the DLL into the same folder as the EXE that needs it. The fact is that one can only have one version of the DLL loaded in memory at a time. (ie: Application A loads DLL version 1 and then Application B tries to load DLL version 2 but can't. Application B ends up hanging or blowing up...
In this case, one of the components can be placed in the same directory as the application, and a file created with the same name as the application executable, with an extension .LOCAL. Then the local component will be used by preference by this application (other applications will use the non-local component, or their own local components).
Because the same registry entries are used for both copies of the component, the components need to be binary compatible for this to work. Hence these registry components are given a shared count under properties.
Steps to follow to isolate a .dll using WPS:
- On the Components tab in Setup Editor, right-click the .DLL you want to isolate.
- From the right-click menu, select New > Isolated Component. The Isolated Component Details dialog appears where you pick a file for isolation from the feature that contains the component.
- If the key path for the current component is not an .EXE, then the drop-down list shows all .EXEs in the containing feature that are key paths of .DLL files.
- If the key path for the current component is an .EXE, then the drop-down list shows all files from the containing feature that are key paths other than the current component.
- From the Associated File drop-down list, select the .EXE you want to assign to this .DLL.
- Click OK.
This technique can be used when more than one version of a component needs to exist on a workstation and the two components are binary compatible.