各位大侠救我!
我使用Setup Factory 6.0汉化版进行安装文件的制作,程序是Visual Basic 6.0编写的,我使用了DATA控件和DAO来连接Access数据库。打包时我在Setup Factory 6.0界面左侧的“运行时支持”中选择了“Visual Basic 6.0(SP5)”和“MDAC 2.6 SP1”模块。但是制作完成的安装文件在别的电脑上安装后,软件不能正确运行。启动时弹出错误提示:Class not registered.
Looking for object with CLSID:{00000010-0000-0010-8000-00AA006D2EA4}软件的第一个窗口要获取计算机的硬盘ID,或许与此有关。该窗口未能显示,然后出现第二个窗口,即主界面,进行用户选择操作时,又弹出错误提示:Run-time error '91':
Object variable or With block variable not set然后就退出了。不知什么原因,该如何解决,请高手赐教!另外以前我使用Setup Factory 5.0用同样方法制作的安装文件可以在别的电脑上正确安装(那台电脑除了windows系统什么都没有装),但是不知现在为何不行?
另外,在软件不能正确运行而我没有办法解决时,在这台电脑上也安装了Visual Basic 6.0,这个软件居然就能正确运行了。

解决方案 »

  1.   

    注册一下就OK了
    regsvr32
    或用其他的打包工具
    如Inno Setup 5
      

  2.   

    用小颖安装程序制作专家,有mdac的附加选项
      

  3.   

    请问:Zezese(蓝酷云) 
    如何注册?在本机注册还是在要安装软件的那台电脑上注册?
      

  4.   

    我还是用Setup Factory 比较熟,如果能解决问题的话还是不想换其它软件。Setup Factory 也有mdac等 模块包的。
    没有人帮我解答吗?
      

  5.   

    http://community.csdn.net/Expert/topic/4196/4196952.xml?temp=.2139551
      

  6.   

    是否包含了 DBGRIG32.OCX 和 DAO360.DLL ?
      

  7.   

    你是自动扫描工程的么?然后添加了所有甬道的第三方控件了么?
    建议在重新打一次包,mdac要保持版本同步!
      

  8.   

    我今天又试着打包了Jet40,但是问题依旧。
    我估计问题还是出在ODBC上,但是我不知该怎么打包ODBC。我电脑上有以前下载的Setup Factory的支持模块安装文件,有MDAC2.6、MDAC2.7、dcom95、jet40,安装并在Setup Factory的安装文件夹runtimes里拷贝了相关执行文件(如MDACTYP.EXE)后,就可以在Factory 6.0界面左侧的“运行时支持”中选择。但是以前下载的ODBC支持模块现在不能正确安装,导致在Factory 6.0中也没有ODBC这个选择,所以不能一起打包。另外同样的原因我也不知道该如何打包MDAC2.8
    我应该怎么办?高手救我!!!
      

  9.   

    要设置好Dao360.dll的属性,其安装目录应为%DAOPath%
      

  10.   

    vbangle:能具体说说吗?
    chinayokel:Inno Setup我试过了,使用倒是方便,就是不知道怎么能打包MDAC等
      

  11.   

    “另外,在软件不能正确运行而我没有办法解决时,在这台电脑上也安装了Visual Basic 6.0,这个软件居然就能正确运行了。”
      既然是这样,肯定是有部分DLL或者是OCX文件(第三分控件你自己考虑,我说的是VB程序所必需的),具本人实验证明,以下文件是必须打包到安装程序中的:
      Cmdlgchs.dll
        Comdlg32.ocx
        Mscmcchs.dll
        Mscomct2.ocx
        Msvcrt.dll
        Tabctchs.dll
        Tabctl32.ocx
        Vb6chs.dll
        Vb6stkit.dll
      

  12.   

    Kelishating(丑小鸭) :
    我按你列的文件都依次打包了,还打包了DAO360.dll,但是问题依旧。不过错误提示倒是变成中文的了:“类未注册”等等
      

  13.   

    我的注册表搜出:HKEY_CLASSES_ROOT\CLSID\{00000010-0000-0010-8000-00AA006D2EA4}的
    组件是DAO.DBEngine.35 ,dll是:DAO350.DLLDAO360.dll版本对你的程序是否太高了?楼主再试试!
      

  14.   

    楼主把这个文件也加进去试试
    mfc42.dll
      

  15.   

    我也遇到过这个问题。
    原因是因为把注册表中的CLSID:{00000010-0000-0010-8000-00AA006D2EA4}值给删除了。
    而且因为setup factory工程中dao350.dll及相关文件,选择了“永不覆盖相同文件”,这样它就不会在安装的过程中注册。只要修改为“总是覆盖存在的文件”就OK了,当然自己去找一个老版的mdac(dao 3.5)来安装也可以。
      

  16.   

    谢谢各位朋友,问题解决了,就是因为没有打包dao350.dll,打包后一切OK!
    结贴啦!另外我还有两个问题请教:
    1、为什么在setup factory中自动扫描VB工程不会自动添加dao350.dll这个文件而需要再手工添加?
    2、我这个程序是早以前做的,当时没有安装VB6sp5,所以引用的是DAO 3.51。现在还是这个程序,我在VB中菜单 工程/引用 中把DAO3.51去掉,勾选DAO 3.6,程序中代码不变,这样可否?我试着这样做,调试没有问题,然后重新生成执行文件,再用setup factory打包,不打包dao350.dll而打包dao360.dll,在别的电脑上安装,系统仍然出现原有错误,意即仍然需要dao350.dll文件,这又是为什么?此贴已结,请各位朋友到http://community.csdn.net/Expert/topic/4196/4196952.xml?temp=.4121515
    帮我一把,还有100分奉送!谢谢了!