背景:我用vc做了一个ocx控件,然后自己写了inf文件,最后将ocx文件、相关dll文件、inf文件打成了cab包,最后进行了签名。测试环境:Windows XP (SP2),Windows 2000 (SP4),IE 6.0(两者IE版本是一摸一样的)测试结果:XP和2000系统都能正确安装证书。XP下面IE能正确下载cab包,并自动将dll文件和ocx文件解压拷贝到system32目录下,并注册ocx控件。但是2000下面却只将cab下载到了IE临时目录,并没有将dll文件和ocx文件解压拷贝到system32目录下,更谈不上自动注册控件了。不知道是什么原因,请大家指点。谢谢!!附上我的inf文件,不知是不是inf文件问题。另外,我是用的cabarc打包、signcode签名。[VERSION]
signature="$CHICAGO$"
AdancedINF=2.0[Add.Code]
MTT.ocx=MTT.ocx
MSVCRT.dll=MSVCRT.dll
MSVCIRT.dll=MSVCIRT.dll
MSVCP60.dll=MSVCP60.dll
MTL302.dll=MTL302.dll[MSVCRT.dll]
file-win32-x86=thiscab
DestDir=11
FileVersion=7,0,2600,2180
RegisterServer=yes[MSVCIRT.dll]
file-win32-x86=thiscab
DestDir=11
FileVersion=7,0,2600,2180
RegisterServer=yes[MSVCP60.dll]
file-win32-x86=thiscab
DestDir=11
FileVersion=6,2,3104,0
RegisterServer=yes[MTL302.dll]
file-win32-x86=thiscab
DestDir=11
RegisterServer=yes[MTT.ocx]
file-win32-x86=thiscab
clsid={7958CD77-3E48-49DF-88CB-8242858BAAFF}
DestDir=11
FileVersion=1,0,0,1
RegisterServer=yes

解决方案 »

  1.   

    还要注意你的版本号,如果网页中要下载的版本号与C:\WINDOWS\Downloaded Program Files里该控件的版本号一致也不会下载的.
    另外,我一般是写一个程序,其中包括拷贝注册等功能,然后在包中只放置这个程序.
      

  2.   

    zhucde(【風間苍月】) :这些能想到的都已经试过了,还是不行。我发现2000下面cab包其实也已经下载了,但是就是不自动解压和安装。我把cab包手动解压,再运行inf文件,ocx依然不能注册。但是在XP下面却完全是自动的,为什么呢??????????
      

  3.   

    mythma:我看了,我测试机器XP和2000的IE版本是一样的。
      

  4.   

    奇怪了,你用regsvr32.exe直接注册一下能不能成功?我怀疑这是系统的问题了,有些需要的文件XP中有,2000中没有,所以不能注册.
    例如mfc42.dll, msvcrt.dll(这个你已经使用了), 如果直接都不能注册,可能就是这种情况.
      

  5.   

    zhucde(【風間苍月】) :手工可以的,而且直接嵌ocx也是可以的自动安装的!!就是cab包不行!真是头痛啊!!!
      

  6.   

    我找到原因了,是dll的原因XP和2000带的几个dll版本不一样,所以inf文件执行不下去谢谢大家