Jump to content


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.
Photo

Internal error 2737


3 replies to this topic

Irina

Irina
  • Members
  • 227 posts

Posted 29 March 2002 - 17:39

Hi all,
My installation doesn't work on a new rebuilt NT4 SP5 machine with IE5.0. This is a stand alone (not a domain member) server. I can reproduce this on any such machine. This installation works fine on W2K or NT4 domain member. The user log in as administrator.
The MSI log file says:

Action start 11:13:28: SetMessageLogParm.
MSI © (9C:74): Creating MSIHANDLE (1) of type 790542 for thread 116
MSI © (9C:74): Closing MSIHANDLE (1) of type 790542 for thread 116
MSI © (9C:74): Note: 1: 2737 2: SetMessageLogParm 3: C:\TEMP\MSI26D.tmp 4: SetMessageLogParm
Internal Error 2737. SetMessageLogParm, C:\TEMP\MSI26D.tmp, SetMessageLogParm
Action ended 11:13:28: SetMessageLogParm. Return value 1.

where SetMessageLogParm is a routine from my install.dll.
How can I understand why the installation package doesn't have access to my dll on this machine?
Any help would be great appreciated.
Thanks,
Irina Shirinsky
Software Engineer, Heroix Corporation
http://www.heroix.com

Ian Blake

Ian Blake
  • Members
  • 483 posts

Posted 03 April 2002 - 13:27

2737 can be caused by calling a routine that is not in the dll.  This is not the problem in your case.

2737 can also be caused by a reference to a second dll.  I recently added code to install a plug and play driver to my setup.  I quickly got a complaint from the test department that windows 9X and NT4 installations failed with 2737.   I investigated and discovered a new dependenecy on NEWDEV.DLL which should not normally be present in 9X or NT4.

I expect you have a similar problem.  Perhaps you can open your dll with Microsofts dependency program. This will tell you which dll is missing on your problem machine.
Ian Blake
(Currently Unemployed)

Irina

Irina
  • Members
  • 227 posts

Posted 03 April 2002 - 21:16

:)
Hi Ian,
Thank you very much for your advice.
I have added to my installation dll some routines to apply the installation on the cluster server and this dll uses now clusapi.dll. This file is missing on my test machine. I put clusapi.dll on the system32 folder and the installation works!
Irina Shirinsky
Software Engineer, Heroix Corporation
http://www.heroix.com

Ian Blake

Ian Blake
  • Members
  • 483 posts

Posted 04 April 2002 - 15:00

Putting clusapi.dll in sytem32 proves the source of the error but in general I think installing unsed dlls is a bad idea.

It may be better to link to the dll in the old fashioned dynamic way.   The code I used was a variation of.

Code Sample

typedef BOOL (__stdcall * UPDATEDRIVER) (
  HWND hwndParent,
  LPCSTR HardwareId,
  LPCSTR FullInfPath,
  DWORD InstallFlags,
  PBOOL bRebootRequired OPTIONAL
  );

HMODULE hLib = LoadLibrary("NEWDEV.DLL");

UPDATEDRIVER UpdateDriver = (UPDATEDRIVER)GetProcAddress(hLib, "UpdateDriverForPlugAndPlayDevicesA");
 
UpdateDriver(NULL, HardwareId, InfPath, 0, &bReboot);

FreeLibrary(hLib);


I do not link with newdev.lib or use newdev.h although I did adapt the declaration of UPDATEDRIVER from UpdateDriverForPlugAndPlayDevicesA in newdev.h
Ian Blake
(Currently Unemployed)