我用vb做了一个activeX的dll,当用户用浏览器访问网站时通过网页里嵌入的代码将ActiveX下载到本地运行。
但是我在activeX里调用了ole32.dll里的产生GUID的方法。通过VB6自带的工具将其打包成通过internet安装的cab文件。通过win2000和windowsXP的IE访问时可以正确的安装和运行,可是在windows98里用IE访问的时候无法正确运行。我认为是windows98里的ole32.dll版本太旧。
我重新用打包工具打包,在打包的选项里,我选择“vb6 runtime and OLE”可以从微软的网站上下载最新版本。重新打包后,在windows98的IE里可以下载安装和正确运行,并且windows98确实更新了ole32.dll这个文件。但是新的问题又出现了。
如果我在windows2000下打包的,那么windows2000的环境里可以正确安装和运行,但是windowsXP的环境下就不能真确安装。反之,如果在windowsXP下打包的,在windowsXP下一切正常,在windows2000下就能安装了。请问这是怎么回事?
如何解决啊?

解决方案 »

  1.   

    1、对9x和win2000/xp采用不同的安装包,即9x安装包里包含ole32.dll,而2000/xp的则不含
    2、自己修改安装程序,检测操作系统版本,进行相应操作
      

  2.   

    windows98里只能到微软网站下载,如果把ole32打包上去系统都坏掉了。
    用什么打包工具,能做包含在网页里的ActiveX?
      

  3.   

    其实包含在网页里的ActiveX根本就没有安装程序,他是通过IE安装的,安装信息放在一个inf文件里。
      

  4.   

    不关IE的事吧。
    到底你那里出了问题啊。你找一个安装工具。包含最新的ole。
    如果系统内存在ole32就不安装这个东东。如果没有才安装。
    或者
    如果 系统内的ole32比你安装包里面的旧就覆盖。否则就不覆盖。有这种语句式的打包工具。像inno setup4
    setup factory也不错。我觉得都比vb自带的好些。
    还有wise等
      

  5.   

    没有安装程序,从internet发布的ActiveX的安装包是一个CAB文件,里面有我编译好的DLL文件和安装用的inf文件,不能自己做安装程序。要控制安装只能修改这个inf文件
    我是想判断如果是windows98下就到微软网站下载最新版,其他的就不管。这个文件该怎么改?
    文件内容:
    ;INF file for thingDemo.dll
    ;DestDir can be 10 for Windows directory, 11 for Windows\System(32) directory, or left blank for the Occache directory.[version]
    signature="$CHICAGO$"
    AdvancedINF=2.0
    [DefaultInstall]
    CopyFiles=install.files
    RegisterOCXs=RegisterFiles
    [RInstallApplicationFiles]
    CopyFiles=install.files
    RegisterOCXs=RegisterFiles
    [DestinationDirs]
    install.files=11
    [SourceDisksNames]
    1=%DiskName%,thingDemo.CAB,1[Add.Code]
    ThingDemo.dll=ThingDemo.dll
    MSVBVM60.DLL=MSVBVM60.DLL
    OLEAUT32.DLL=OLEAUT32.DLL
    OLEPRO32.DLL=OLEPRO32.DLL
    ASYCFILT.DLL=ASYCFILT.DLL
    STDOLE2.TLB=STDOLE2.TLB
    COMCAT.DLL=COMCAT.DLL
    [install.files]
    ThingDemo.dll=ThingDemo.dll
    MSVBVM60.DLL=MSVBVM60.DLL
    OLEAUT32.DLL=OLEAUT32.DLL
    OLEPRO32.DLL=OLEPRO32.DLL
    ASYCFILT.DLL=ASYCFILT.DLL
    STDOLE2.TLB=STDOLE2.TLB
    COMCAT.DLL=COMCAT.DLL
    [SourceDisksFiles]
    ThingDemo.dll=1
    MSVBVM60.DLL=1
    OLEAUT32.DLL=1
    OLEPRO32.DLL=1
    ASYCFILT.DLL=1
    STDOLE2.TLB=1
    COMCAT.DLL=1[ThingDemo.dll]
    file-win32-x86=thiscab
    RegisterServer=yes
    clsid={ED41D58C-C3E8-471E-A67D-D81AE005D60E}
    DestDir= 
    FileVersion=1,0,0,0[MSVBVM60.DLL]
    hook=MSVBVM60.cab_Installer
    FileVersion=6,0,96,90
    [MSVBVM60.cab_Installer]
    file-win32-x86=http://activex.microsoft.com/controls/vb6/VBRun60.cab
    run=%EXTRACT_DIR%\VBRun60.exe[OLEAUT32.DLL]
    hook=OLEAUT32.cab_Installer
    FileVersion=2,40,4522,0
    [OLEAUT32.cab_Installer]
    file-win32-x86=http://activex.microsoft.com/controls/vb6/VBRun60.cab
    run=%EXTRACT_DIR%\VBRun60.exe[OLEPRO32.DLL]
    hook=OLEPRO32.cab_Installer
    FileVersion=5,0,4522,0
    [OLEPRO32.cab_Installer]
    file-win32-x86=http://activex.microsoft.com/controls/vb6/VBRun60.cab
    run=%EXTRACT_DIR%\VBRun60.exe[ASYCFILT.DLL]
    hook=ASYCFILT.cab_Installer
    FileVersion=2,40,4522,0
    [ASYCFILT.cab_Installer]
    file-win32-x86=http://activex.microsoft.com/controls/vb6/VBRun60.cab
    run=%EXTRACT_DIR%\VBRun60.exe[STDOLE2.TLB]
    hook=STDOLE2.cab_Installer
    FileVersion=2,40,4522,0
    [STDOLE2.cab_Installer]
    file-win32-x86=http://activex.microsoft.com/controls/vb6/VBRun60.cab
    run=%EXTRACT_DIR%\VBRun60.exe[COMCAT.DLL]
    hook=COMCAT.cab_Installer
    FileVersion=4,71,1460,1
    [COMCAT.cab_Installer]
    file-win32-x86=http://activex.microsoft.com/controls/vb6/VBRun60.cab
    run=%EXTRACT_DIR%\VBRun60.exe
    [RegisterFiles]
    %11%\COMCAT.DLL
    %11%\OLEPRO32.DLL
    %11%\OLEAUT32.DLL
    %11%\MSVBVM60.DLL
    %11%\ThingDemo.dll
      

  6.   

    关于这个问题可能是OS的SP没有更新的问题