In my 7.04 Basic project, I have a CA to load 3 dlls. It works fine in about 50 machines. But failed to load the last dll in only two win2000 machines. Source codes looks like:
UseDll(SUPPORTDIR^”a.dll”);
UseDll(SUPPORTDIR^”xerces-c_1_5_2.dll.dll”);
UseDll(SUPPORTDIR^”b.dll”);
a.dll and xerces-c_1_5_2.dll.dll are the dependencies of b.dll.
Dlls are in the temp directory and the dependency dlls are loaded successfully. Is any other possibility to cause UseDll failed? Thanks.
Qiao
This is a ready-only archive of the InstallSite Forum. You cannot post any new content here. / Dies ist ein Archiv des InstallSite Forums. Hier können keine neuen Beiträge veröffentlicht werden.

UseDll failed
Started by
qiaoli
, Nov 29 2002 19:03
3 replies to this topic
Posted 29 November 2002 - 20:09
Maybe it has some additional dependencies. Can you load the DLL on the filaing machines using DependencyWalker?
Stefan Krüger
InstallSite.org twitter facebook
Posted 02 December 2002 - 00:30
Qiao,
You may already know this.
If you are only using functions from B.dll, then there is no need to explicitly load A.dll and Xerces-c_1_5_2.dll", because they will get loaded by B.dll automatically. In other words the following code should be fine:
//UseDll(SUPPORTDIR^”a.dll”);
//UseDll(SUPPORTDIR^”xerces-c_1_5_2.dll.dll”);
UseDll(SUPPORTDIR^”b.dll”);
If you are using functions from the commented dll's then you will need to load them, as you have.
As for your problem, it could be that the two machines in question have disabled long file name support. This is something that once caused me problems. You may be able to see the problem with dependancy walker on the machines in question. If this is the problem, then simply converting the name to short format before calling UseDll() should overcome the problem. InstallScript has a function to do this called LongPathToShortPath().
Regards,
Sijmen.
You may already know this.
If you are only using functions from B.dll, then there is no need to explicitly load A.dll and Xerces-c_1_5_2.dll", because they will get loaded by B.dll automatically. In other words the following code should be fine:
//UseDll(SUPPORTDIR^”a.dll”);
//UseDll(SUPPORTDIR^”xerces-c_1_5_2.dll.dll”);
UseDll(SUPPORTDIR^”b.dll”);
If you are using functions from the commented dll's then you will need to load them, as you have.
As for your problem, it could be that the two machines in question have disabled long file name support. This is something that once caused me problems. You may be able to see the problem with dependancy walker on the machines in question. If this is the problem, then simply converting the name to short format before calling UseDll() should overcome the problem. InstallScript has a function to do this called LongPathToShortPath().
Regards,
Sijmen.
Posted 04 December 2002 - 18:59
Thank Stefan and Sijmen. I have tried Dependency Walker. It seems all dependency loaded successfully. As a solution, my project leader ajusted the structure of our product . The b.dll won't have any dependency dll. Now my installation program runs without problem in this two machines.
Qiao
Qiao