PDA

View Full Version : Custom Action - DLL Not Found issue



BobZawislak
04-02-2008, 09:04 AM
When trying to enter and validate a serial number during our product installation, we can't get past the Customer Information screen. We keep getting a pop up message that says "InstallShield DLL Custom Action - File: C:\...\...\fnm.dll" can not be found. Make sure the file is on the target system or installed already."

According to the on-screen instructions for the Dialog configuration for this screen, the DLL won't be on the target system or installed already, it is something we rwote and include as part of the installation.

A little background: We recently upgraded from InstallShield Express Version 3.5 SP4 to InstallShield 2008 Express Version 14. We also changed our development IDE from Visual C++ 6.0 to Visual Studio 2005.

The old InstallShield version didn't have any Custom Actions or Setup Files defines for the project and worked flawlessly when the user had to validate the serial number, we're a little perplexed as to why the new & improved version is having these issues.

The InstallShield Express Version 3.5 install script had the same steps, the same Customer Information screen configuration requiring a user-supplied DLL to validate the Serial Number and it worked correctly. All we did was install InstallShield 2008 Express, start it up, point to the old *.ism file, let 2008 Express convert it, try to run and we started having this issue.

The Serial Number validation option is widely used on Customer Information screens, so i'm sure this is an easy one to resolve.

Any guidance and suggestions would be appreciated.

joshstechnij
04-11-2008, 04:14 PM
It is unlikely that the cause of this error is your DLL not present on the machine. In general, this error is more likely caused by a missing dependency your DLL needs to load correctly. Since you're building the DLL with VS 2005, the DLL probably needs the MSVCRT 8 runtime DLL in order to load successfully. The error reports your DLL as missing because the Win32 LoadLibrary API does not provide us any direct feedback that a load error was due to a missing dependency.

To verify this is the issue, run the Dependency Walker utility (www.dependencywalker.com) against your serial number DLL on the machine(s) that are encountering this behavior. Dependency Walker will report any dependencies needed by your DLL that are not present on the machine.

If this turns out to be the cause, the simplest resolution is to statically link your DLL to the VC 8 runtime libraries.

BobZawislak
04-13-2008, 08:16 AM
Thanks, but that wasn't it either.

While waiting for a response, i removed this step and built another image to test if the files would install. They did but the app wouldn't run for the reasons you mentioned.

So then i did a dependency walker and the dynamic scanning as well as static scanning steps to get a complete list of every dependency my DLLs and EXEs needed.

I built that image, again without the Customer Serial Number Validation step, installed it and the target application finally worked.

I then went back and enabled the Customer Information Serial Number validation step, repeated the above [working] scans, built that image and again, no luck, InstallShield wouldn't let me get past the Serial Number Validation step.

You can close this thread, we have no more time to spend debugging this or waiting for a correct solution. Your Help documentation and tutorial steps obviously need some additional information regarding successfully implementing this step, it's isn't as simple as just specifying the name of the function in a DLL.