×

Loading...
Ad by
  • 最优利率和cashback可以申请特批,好信用好收入offer更好。请点链接扫码加微信咨询,Scotiabank -- Nick Zhang 6478812600。
Ad by
  • 最优利率和cashback可以申请特批,好信用好收入offer更好。请点链接扫码加微信咨询,Scotiabank -- Nick Zhang 6478812600。

 问题:本人用VB 6制作了一个程序,但在安装该软件时系统报告:

本文发表在 rolia.net 枫下论坛 问题:本人用VB 6制作了一个程序,但在安装该软件时系统报告:

  错误: 在′C:WINDOWS\SYSTEM\expsrv.dll′中未发现DllRegisterServer() 的\WINDOWS\SYSTEM\expsrv.dll″输入点;在本操作期间: DllSelfRegister: ″C:;错误: 注册文件 ′C:\WINDOWS\SYSTEM\expsrv.dll′时出错;错误: (用户响应′忽略′)。

  忽略错误后安装完成。在Windows 98下安装也有同样的问题。

  

  答:DLL有两种,一种是标准DLL,另一种是ActiveX DLL。前者拷贝到用户机器上就可以工作了,而后者还需要调用DLL中的DllRegisterServer或者使用RegSvr32进行注册才能使用。你可以打开VB98\Wizards\PDWizard\VB6dep.ini文件。下面是这个文件的片断:

  [ExpSrv.dll]

  Dest=$(WinSysPathSysFile)

  CABFileName=MSJet35.cab

  CABDefaultURL=http://activex.microsoft.com/controls/vb6

  CABINFFile=MSJet35.inf

  [MSRD2x35.dll]

  Dest=$(WinSysPathSysFile)

  Register=$(DLLSelfRegister)

  CABFileName=MSJet35.cab

  CABDefaultURL=http://activex.microsoft.com/controls/vb6

  CABINFFile=MSJet35.inf

  

  可以看到MSRD2x35.dll比ExpSrv.dll多一行Register=$(DLLSelfRegister),这是因为MSRD2x35.dll是ActiveX DLL。ExpSrv.dll是普通的DLL,没有DllRegisterServer,也用不着注册。你所遇到的问题是VB 6的一个Bug(在VB 6 SP3中已经修复)。如果你的VB6dep.ini文件的ExpSrv.dll多了Register一行,应该删除。或者打开安装程序的Setup.lst,删除其中ExpSrv.dll一行中的“$(DLLSelfRegister)”字样。更多精彩文章及讨论,请光临枫下论坛 rolia.net
Report

Replies, comments and Discussions:

  • 工作学习 / IT技术讨论 / 急!请教有关VB安装包的问题:一个安装包在接近完成的时候提示“由于未找到文件'C:\WINDOWS\TEMP\msftqws.pdw\$(DLLSelfRegisterEX)',它不能被注册”。实在找不出问题出在哪里,有那一位DX遇到过类似的问题吗?
    • 我是用installshield 大包的,没有见过这个问题,在google 中输入 “'C:\WINDOWS\TEMP\msftqws.pdw\$(DLLSelfRegisterEX, not found, vb package“,或许可以查到答案。
      •  问题:本人用VB 6制作了一个程序,但在安装该软件时系统报告:
        本文发表在 rolia.net 枫下论坛 问题:本人用VB 6制作了一个程序,但在安装该软件时系统报告:

          错误: 在′C:WINDOWS\SYSTEM\expsrv.dll′中未发现DllRegisterServer() 的\WINDOWS\SYSTEM\expsrv.dll″输入点;在本操作期间: DllSelfRegister: ″C:;错误: 注册文件 ′C:\WINDOWS\SYSTEM\expsrv.dll′时出错;错误: (用户响应′忽略′)。

          忽略错误后安装完成。在Windows 98下安装也有同样的问题。

          

          答:DLL有两种,一种是标准DLL,另一种是ActiveX DLL。前者拷贝到用户机器上就可以工作了,而后者还需要调用DLL中的DllRegisterServer或者使用RegSvr32进行注册才能使用。你可以打开VB98\Wizards\PDWizard\VB6dep.ini文件。下面是这个文件的片断:

          [ExpSrv.dll]

          Dest=$(WinSysPathSysFile)

          CABFileName=MSJet35.cab

          CABDefaultURL=http://activex.microsoft.com/controls/vb6

          CABINFFile=MSJet35.inf

          [MSRD2x35.dll]

          Dest=$(WinSysPathSysFile)

          Register=$(DLLSelfRegister)

          CABFileName=MSJet35.cab

          CABDefaultURL=http://activex.microsoft.com/controls/vb6

          CABINFFile=MSJet35.inf

          

          可以看到MSRD2x35.dll比ExpSrv.dll多一行Register=$(DLLSelfRegister),这是因为MSRD2x35.dll是ActiveX DLL。ExpSrv.dll是普通的DLL,没有DllRegisterServer,也用不着注册。你所遇到的问题是VB 6的一个Bug(在VB 6 SP3中已经修复)。如果你的VB6dep.ini文件的ExpSrv.dll多了Register一行,应该删除。或者打开安装程序的Setup.lst,删除其中ExpSrv.dll一行中的“$(DLLSelfRegister)”字样。更多精彩文章及讨论,请光临枫下论坛 rolia.net
        • 非常感谢!你提供的URL中问题集里最后的一个问题正好与我的问题相同,现在问题已经解决。
    • 你的vb6是否安装了sp5?如果没有,下载,安装。
      • 对不起,没注意看,实际上只有你一个人在回答,谢谢了!
        • 赫赫,没关系。如果没有安装sp5 for vb6,可以到microsoft网站下载。另外,利用google查询所要的问题,在其web 或 group(新闻组)一般都可以找到答案。
    • 谢谢以上各位了,我正在根据意见处理。