本帖最后由 aizb 于 2010-11-18 16:34:56 编辑

解决方案 »

  1.   


    谢谢,需要说明的是,CAB已经签名,且签名已经被客户端安装并信任,ActiveX安装的提示也已经弹出并选择“安装”,所以应该不是安全限制的问题,并且文件也已经下载到客户端并解压,安全限制的文件是不能被下载到本地的。
    另外,我们已经测试了把所有安全限制降到最低,但是似乎INF中的所有安装工作都仍然没有执行。
      

  2.   


    我把重点放在inf文件是否正确上面。
      

  3.   

    我又把上面的所有文件使用VS2008打成安装包,结果包含两个文件:Setup.exe和CMS.NET.Workstation.WebActiveX.Setup.msi,然后把install.inf改成:
    [version]    
    signature="$CHICAGO$"
    AdvancedINF=2.0[DefaultInstall]
    CopyFiles=install.files
    ;RegisterOCXs=RegisterFiles[DestinationDirs]
    install.files=0,%11%\FSIActiveX[install.files]
    CMS.NET.Workstation.WebActiveX.Setup.msi=CMS.NET.Workstation.WebActiveX.Setup.msi
    Setup.exe=Setup.exe[Setup Hooks]  
    hookname=section_name  [section_name]  
    run=%EXTRACT_DIR%\setup.exe[Setup.exe]
    file-win32-x86=thiscab
    FileVersion=1,0,0,1[CMS.NET.Workstation.WebActiveX.Setup.msi]
    file-win32-x86=thiscab
    FileVersion=1,0,0,1再签名,下载,结果还是一样没有任何安装。
      

  4.   

    为了能够在本地测试这个INF文件(在Windows资源管理器中单击inf右键,在弹出菜单中“安装”项可以直接安装),我修改成下面的内容:[version]    
    signature="$CHICAGO$"
    AdvancedINF=2.0
    ClassGUID={36A2C418-2137-49e0-8EBB-A43AB5EAE4C9};增加了一个ID
    Provider="FSIINC";增加了Provider[SourceDisksNames];如果要本地能执行安装,必须要有这一节。
    1="CMS.NET.Workstation.WebActiveX.Setup"[SourceDisksFiles];如果要本地能执行安装,必须要这一节。
    CMS.NET.Workstation.WebActiveX.Setup.msi=1
    Setup.exe=1[DestinationDirs]
    Files=0,%11%\FSIActiveX[DefaultInstall]
    CopyFiles=Files[Files]
    CMS.NET.Workstation.WebActiveX.Setup.msi=CMS.NET.Workstation.WebActiveX.Setup.msi
    Setup.exe=Setup.exe[Setup.exe]
    file-win32-x86=thiscab
    hook=section_name  
    ;FileVersion=1,0,0,1[section_name]  
    run=msiexec.exe CMS.NET.Workstation.WebActiveX.Setup.msi; %11%\FSIActiveX\setup.exe[CMS.NET.Workstation.WebActiveX.Setup.msi]
    file-win32-x86=thiscab
    ;FileVersion=1,0,0,1经过上述修改之后,在Windows资源管理器中右键单击这个inf文件,弹出的菜单中选“安装”项,能够将同在一个文件夹中的setup.exe和CMS.NET.Workstation.WebActiveX.Setup.msi复制到C:\Windows\System32\FSIActiveX,但是还是没有执行run中的命令
      

  5.   

    根据我从本地inf右键菜单的安装来运行的结果(也是没有运行run里面指令)来看,跟安全无关,本地运行是不涉及到安全的。而且我从网页下载的CAB是经过签名的,并且把IE的安全级别降到最低都试过。
      

  6.   

    还是高手都不愿意回答这样的问题?其实就是很简单?如何运行inf中的run指令?
      

  7.   

    在客户端手工注册ocx试试看,能不能用
      

  8.   


    手工注册OCX是肯定可以的,编写这个OCX的时候就已经测试过N遍了,也在其他各电脑上都有过测试。
      

  9.   

    需要说明的是:抛开OCX不管,INF中的run所指向的即使是MS网站上的东西,也不能在本地运行(使用右键菜单"安装")。
      

  10.   

    和你遇到了一样的问题,C#写的ActiveX.dll文件能写到system32下,但是就是无法将classid注册到注册表中,所以每次访问时,都显示要安装,安装后仍然无法使用dll里的方法。
    不知道你现在可解决了,如果解决了希望能拉一把兄弟....