ActiveX无法在客户端计算机上运行

时间:2012-12-26 14:40:12

标签: activex cab inf

我正在尝试为简单的hello world消息框运行activex控件。 首先我创建了类库,我现在有了dll,然后我创建了HTML页面并调用了activeX控件:

<!DOCTYPE>
<html>
<head>
      <title>DemoActiveX</title>
</head>
<body>
   <OBJECT id="DemoActiveX" classid="clsid:400DCE17-4B26-4E59-9A88-AF39E2BE4A55">
</OBJECT>
    <script type="text/javascript">
        try {
            var obj = document.DemoActiveX;
            if (obj) {
                alert(obj.SayHello());
            } else {
                alert("Object is not created!");
            }
        } catch (ex) {
            alert("Some error happens, error message is: " + ex.Description);
        }
    </script>
</body>
</html>

当我在我的机器上尝试它时,我曾经使用regasm / codebase“dll path”注册dll,它运行正常。

当我试图在另一台机器上运行时出现问题,我按照以下步骤操作: 1)我创建了安装项目并添加了dll文件。

2)我创建了.inf文件并尝试了两个内容:

[version]
signature="$CHICAGO$"
AdvancedINF=2.0
[Add.Code]
ActiveX.dll=ActiveX.dll

[ActiveX.dll]
file-win32-x86=thiscab
clsid=400DCE17-4B26-4E59-9A88-AF39E2BE4A55
FileVersion=1,0,0,0

RegisterServer = yes

[version]
signature="$CHICAGO$"
AdvancedINF=2.0

[Setup Hooks]
install=install

[install]
run=msiexec.exe /package """%EXTRACT_DIR%\DemoActiveXSetup.msi""" /qn

3)我创建了包含.inf和setup.exe文件的.CAB文件 4)将HTML页面中的对象更改为:

<OBJECT id="DemoActiveX" classid="clsid:400DCE17-4B26-4E59-9A88-AF39E2BE4A55" 
codebase="ActiveXCAB.CAB" ></OBJECT>  

当我试图打开另一台机器上的页面时,一个请求窗口打开了哪个请求打开CAB,当我按下是什么都没发生!!!!! 为什么它不打开setup.exe或msi文件? BTW当我手动安装activeX工作的安装文件时!

1 个答案:

答案 0 :(得分:4)

我解决了问题:) 问题是:

1)我以前只把msi文件或setup.exe放在CAB文件中,但是我必须把msi和setup.exe都放到inf文件中的setup.exe

2)inf文件格式错误,正确的是:

 [version]
 signature="$CHICAGO$"
 AdvancedINF=2.0

 [Add.Code]
 setup.exe=setup.exe

 [setup.exe]
 file-win32-x86=thiscab
 clsid={415D09B9-3C9F-43F4-BB5C-C056263EF270}
 FileVersion=1,0,0,0

 [Setup Hooks]
 RunSetup=RunSetup

 [RunSetup]
 run="%EXTRACT_DIR%\setup.exe"

祝你好运:)