The InstallShield KnowledgeBase contains the following entry concerning this error message:
When running an InstallShield setup, you receive the run-time error 0x80040707 / 80040707 with a message that is specific to each cause.
--------------------------------------------------------------------------------
Cause 1
The error code 0x80040704 usually appears because the wrong calling convention for a DLL function is being used.
Resolution
Specify the calling convention in your DLL function declaration. The calling convention can be specified using either of the keywords cdecl or stdcall. Use the following syntax:
prototype [stdcall|cdecl] [ReturnType] [DllName.]FunctionName
( ParameterList … );
Everything in is optional and stdcall is the default.
An example prototype would be:
prototype cdecl INT MyDLL.MyFunction(BYREF STRING);
--------------------------------------------------------------------------------
Cause 2
The error description ‘Dll function call crashed: ISRT.PathGetSpecialFolder’ occurs because the Windows API used to get the information fails if one of the special paths is invalid in the registry. This problem sometimes causes a DosExecPgm initialization error in 6.0.
Resolution
To workaround this exception, you can implement the following when calling ProgDefGroupType:
try
ProgDefGroupType(…) catch endcatch;
Doing this will ignore the exception.
The special paths have not been documented by Microsoft. To test and narrow down the issue further, create a C++ program that calls the Windows API SHGetSpecialFolderLocation with CSIDL_DESKTOP, CSIDL_PROGRAMS, CSIDL_STARTUP, and CSIDL_STARTMENU. One constant should fail, and then through trial and error or research on MSDN, you can determine which registry value is invalid. You can then fix the registry value, and the Windows API should work on the system.
--------------------------------------------------------------------------------
Cause 3
The error description ‘Dll function call crashed: ISRT.VerGerFileVersion’ occurs on a call to VerGetFileVersion for a file in TARGETDIR because TARGETDIR has an invalid length. InstallShield has assigned this issue to work order number 1-8UA0V. This number can be referenced when tracking the issue.
Resolution
As a workaround, the Is function can be used to verify that TARGETDIR is a valid directory. Here is a sample code snippet from the OnFirstUIBefore event handler showing a workaround:
function OnFirstUIBefore()
number nResult;
string szTitle, szMsg, svVersion;
begin
TARGETDIR = PROGRAMFILES ^ @COMPANY_NAME ^ @PRODUCT_NAME;
…
Dlg_SdAskDestPath:
szTitle = “”;
szMsg = “”;
nResult = SdAskDestPath( szTitle, szMsg, TARGETDIR, 0 );
if (nResult = BACK) goto Dlg_Start;
nResult = Is (DIR_WRITEABLE, TARGETDIR);
if (nResult= 0 ) then
// TARGETDIR is not writeable
MessageBox(“TARGETDIR is not writeable. Enter a valid directory.”, 0);
// reset the value of TARGETDIR
TARGETDIR = PROGRAMFILES ^ @COMPANY_NAME ^ @PRODUCT_NAME;
// go back to SdAskDestPath dialog
goto Dlg_SdAskDestPath;
elseif (nResult = 1) then
// TARGETDIR is writeable
MessageBox(“TARGETDIR is writeable”, 0);
// ok to call VerGetFileVersion
VerGetFileVersion(TARGETDIR^ “myfile.txt”, svVersion);
else
MessageBox(“Is function failed” , 0);
endif;
…
end;
--------------------------------------------------------------------------------
Cause 4
This error might also occur during initialization.
Resolution
For further information about troubleshooting initialization issues, refer to the Knowledge Base article Q104985 INFO: Initialization Error Troubleshooting.
Cause 1 can be excluded because this would prevent the setup to run on any computer.
Cause 3 can be excluded because the error does not occur in ISRT, but in saginst.dll.
Cause 4 is also very unlikely.
Remains cause 2. Please follow the instructions above.
Regards
Harald
#webMethods#Tamino#API-Management