installshield 6.21制作的安装程序在winxp中运行到最后一步报告出错“Dll function call crashed: USER32.MessageBoxA”,该怎么处理

installshield 6.21制作的安装程序在winxp中运行到最后一步报告出错“Dll function call crashed: USER32.MessageBoxA”
我用installshield6.21制作了一个软件的安装文件,里面有几个dll需要在安装过程中自动注册到系统中,因此设置Self-Registered为yes,制作完的安装文件在windows2003下可以正常运行无问题。可是在winxp下运行到最后一步时系统报告:

Error   Number:   0x80040707
Description:   Dll   function   call   crashed:   USER32.MessageBoxA
Setup   will   now   terminate.

上网搜索有人说是因为注册DLL文件失败导致,需要将设置Self-Registered为no,可是我的dll就是需要自动注册的,而且在windows2003下运行也无问题,在winxp下为什么会这样?谢谢!

------解决方案--------------------
可以在安装程序文件中,自己写程序来完成DLL文件注册,如下:
szProgram = TARGETDIR^ "REGSVR32.EXE ";
szCmdLine = "ComplexType.dll ";
nResult = LaunchAppAndWait(szProgram, szCmdLine,WAIT);
if (nResult < 0)
then MessageBox( "注册失败 ", INFORMATION);
endif;