我写了一个OCX控件,现在需要在网页客户端调用。这就涉及到控件的自我注册问题,需要做成一个CAB文件,于是需要写INF。但是我这个控件是在别人开发的KIT基础上做的,于是需要很多DLL文件(大概30个),这么多的文件,如果用INF 一个一个的写的话,感觉非常的麻烦,而且不好管理。请问:有没有INF语法将这些需要用到的文件放在一个文件夹里,然后只要对这个文件夹做一次类似文件的INF语法操作,作成CAB文件。或者利用BAT一类的文件,通过网页直接调用就行的办法。反正只要我这个控件能在客户端自动注册,让浏览器能使用就行。先感谢路过此地的朋友!尤其感谢在此地留下脚印的朋友!特别感谢能够在此解决此问题的XDJM。

解决方案 »

  1.   

    http://blog.csdn.net/MLiang/category/184234.aspx
    或许对你有用。
      

  2.   

    3x 是否有做这种安装包的工具?
    我这个控件需要的库文件太多了,一个一个的写INF的话,非常麻烦,并且容易出错!
      

  3.   

    Example INF:AdvancedINF=2.0[Add.Code]
    a.dll=a.dll
    b.dll=b.dll
    c.dll=c.dll
    ...[a.dll]
    file-win32-x86=thiscab
    clsid={12345678-1234-1234-1234-123456789012}
    FileVersion=1,0,0,0
    RegisterServer=yes[b.dll]
    file-win32-x86=thiscab
    clsid={12345678-1234-1234-1234-123456789012}
    FileVersion=1,0,0,0
    RegisterServer=yes[c.dll]
    file-win32-x86=thiscab
    clsid={12345678-1234-1234-1234-123456789012}
    FileVersion=1,0,0,0
    RegisterServer=yes...
      

  4.   

    不是很明白楼主的意思,如果你想把需要用到东西写到一个文本文件中,
    然后使用这个文本去压缩是可以的,我就是把所有用到的dll写到文本文件,
    再用下面的语句打个cab的:
    cabarc -s 6144 -p n my.cab @my.txtmy.txt: 
    cab\msvcrt.dll
    cab\mfc42.dll
    cab\folder\my1.dll //有个文件夹folder
    cab\folder\my2.dll
      

  5.   

    3q lion_wing(凤之焚)不是每个DLL都需要注册吧!
    还有就是我这个控件包含大约40个相关文件。这些文件的版本还个有不同,如果一个一个的写INF的话,会很麻烦,也容易出错啊~。我想找个简单的方法第2个问题是:我做了个测试空间,只是简单的显示一个按扭。打包成CAB,包含了test.ocx test.inf 怎么网页还是不能加载呢?
      

  6.   

    to: qsc555(石羊山)这样控件可以在WEB客户端自动注册吗?
      

  7.   

    CLASID有没对,签名启动了否?
      

  8.   

    1、把所有DLL都放到一个CAB中,在包中的INF写:
    [a.dll]
    file-win32-x86=thiscab
    clsid={12345678-1234-1234-1234-123456789012}
    FileVersion=1,0,0,0
    RegisterServer=yes[b.dll]
    file-win32-x86=thiscab
    clsid={12345678-1234-1234-1234-123456789012}
    FileVersion=1,0,0,0
    RegisterServer=no注:需要注册的RegisterServer=yes,不需注册的RegisterServer=no
    其中的clsid={12345678-1234-1234-1234-123456789012},要和DLL的CLSID对应
    2、如果没有签名,本地测试时,把IE安全调低
    3、参考:http://blog.csdn.net/shanhe/archive/2004/12/25/229368.aspx
      

  9.   

    那么请问,如果有很多文件,是否必须用INF 一个一个的写呢?
      

  10.   

    把所有DLL打到一个包里,INF像上面一样书写,就可以了。
      

  11.   

    to adaisong (),我的控件反正在XP下是不能显示的,在win2000pro是可以自动注册显示,不过提示要一个一个的复制dll,很麻烦,哪位网友知道告诉一下谢谢,;网上说xp下不能正常显示ocx;你可能还要在代码里加些东西:http://www.csdn.net/develop/Article/24/24911.shtm ,
    http://blog.vckbase.com/zaboli/archive/2004/11/30/1817.aspx什么打包你可以参考msdn的Packaging ActiveX Controls,我的文件也多,一个一个加吧,我觉得用了那么大那么多的dll,做这个控件没什么意义了:)
      

  12.   

    有个办法,可以把其它DLL的内容作为资源放到OCX中,下载到客户端机器上再将这些DLL保存成文件。但有可能有的杀病毒软件会认为这是病毒。
      

  13.   

    问题是现在就算是最简单的测试文件压成CAB文件都不能在IE上下载安装,自动注册.
      

  14.   

    30个文件即使是手工加入INF文件也不需要很多时间吧,不超过半小时吧,你这么问不是更耽误时间.
      

  15.   

    我用vb6.0写了一个ActiveX 也遇到你同样的问题,不知有什么好的解决办法
      

  16.   

    我用的方法不是写INF文件,重新写一个程序InstOCX.exe,是把所需要的所有文件都放在它的资源里,然后在程序的运行中进行释放并且注册控件,然后写一个INF文件, [Version]
    Signature="$CHICAGO$"
    AdvancedInf=2.0[Setup Hooks]
    hook1=hook1[hook1]
    run=%EXTRACT_DIR%\InstOCX.exe -automatic然后把这个INF和这个EXE打成一个CAB包.不过还是要跟楼主泼盘冷水, 想让IE自动下载并浏览不容易,
    因为你没有安全证书,无法对它进行签名(只能用测试证书签名)
    而现在的浏览器大部分对未经过验证的签名都是拒绝下载和运行的,
    所以要想发布还得去买证书(一般都是4000左右一年),
    我也打算去买了.
      

  17.   

    zhucde(【風間苍月】) 兄
    不知怎么才能把所需要的所有文件都放在它的资源里,请兄弟说详细点。
    不知能否提供一个简单的事例。
     多谢帮忙。