发布MFC ActiveX控件并实现自动更新


使用工具: PackageForTheWeb

编译 ActiveX 控件

在发布之前我们最好用 VS2005将控件编译成“ Release”版本,还有一个值得注意的地方是我们在使用MFC类库来开发 ActiveX控件时要考虑客户端是否有 MFC类库,解决方法有两种:

  1. 在下面打包的时候将 MFC的类库 DLL附带上。

  2. 通过“项目”—》“属性”打开项目属性对话框,将“ MFC的使用”设置为“在静态库中使用MFC”。如下图:

点击“确定”保存配置信息,这样生成的 ActiveX控件不需要 MFC类库,建议第 2种方法。

打包 ActiveX 控件

编译好 ActiveX控件,我们会在 Release文件夹下发现“ ActiveXDemo.ocx”文件生成。接下来我们打开“PackageForTheWeb”工具,界面如下:

点击“下一步”按钮。

默认设置,点击“下一步”按钮。

输入上述信息,“公司名称”和“产品名称”为必输项,其它可以不填。点击“下一步”按钮。

选择“ Cab文件”,点击“下一步”按钮。  

找到你放置“ ActiveXDemo.ocx”目录,点击“下一步”按钮。

因为我们编译的 ActiveX控件是按第二种方法编译的,所以不用附带其它 dll文件,如果要附带其它文件可以通过点击“加入”按钮来自定义添加文件。点击“下一步”按钮。

点击“确定”,让工具添加默认的 INF文件。

点击“下一步”按钮。

点击“下一步”按钮。

设置好项目和 cab文件保存目录。点击“下一步”按钮。

点击“下一步”按钮。

最后点击“完成”按钮。

发布 ActiveX 控件

通过上面的步骤我们会得到一个“ ActiveXDemo.cab”文件。

<!DOCTYPE html>
<html charset="utf-8">

<head>
    <title></title>
</head>

<body>
    <object id="MyOcx" classid="CLSID:A14790E6-9DCC-42AD-911C-19D000A4135B" type="application/x-oleobject" codebase="ActiveXStudy1.cab#version=1,0,0,1" >
    </object>
    <script>
    function PassParameter() {
        try {
            if (num1.value != " " && num2.value != " ") {
                alert(MyOcx.AddFun(num1.value, num2.value));
            }
        } catch (e) {
            console.log('错误' + e.message + '发生在' + e.lineNumber + '行')
        }
    }

    </script>
    Input Parameter1:
    <input type="text" name="num1" value=" ">
    <br /> Input Parameter2:
    <input type="text" name="num2" value=" ">
    <p></p>
    <input type="button" name="submit" value="Submit" onclick="PassParameter();">
</body>

</html>

"version=1,0,0,1" 要与前面的 Info文件中的 version一致。到现在为止,我们可以将上面的 Html页面和 cab文件放置在一个目录下,可以通过浏览器来测试。

更新 ActiveX 控件

如果修改了 ActiveX控件的方法,并且用上述的编译的方法编译 ActiveX控件,打包 ActiveX控件。在打包ActiveX控件步骤中,我们需要在编辑 INF文件步骤中我们可以将 FileVersion设置为 1,0,0,2。为了区别以往的版本。

相应的我们在更新 ActiveX控件步骤中,在 HTML文件中将 <object id="MyOcx" classid="clsid:A14790E6-9DCC-42AD-911C-19D000A4135B" codebase="ActiveXStudy1.cab#version=1,0,0,2"> </object> 将 version设置为上面的版本号。这样的话客户端浏览器在浏览页面时会自动检测控件的版本,如果有更新的版本浏览器会提示你重新安装控件。

注意事项

如果出现 automation服务器不能创建对象 提示,修改 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\ActiveX Compatibility\{00000566-0000-0010-8000-00AA006D2EA4}Compatibility Flags 十六进制为 0,64 位系统在 Wow6432Node 节点下

知识共享许可协议
《发布MFC ActiveX控件并实现自动更新》 常伟华 创作。
本作品采用知识共享署名-相同方式共享 4.0 国际许可协议 | 3.0 中国大陆许可协议进行许可。

站内公告