您的位置:首页 > 其它

用Activex控件(cab)自动部署软件:Activex开发和发布过程与总结。

2012-08-16 09:35 423 查看
引言就不写了,直接讲过程,希望对大家有帮助。

-----------------------------------------------------------------------------------------------------------------
开发环境:WIN7 VS2010

目的:通过IE,自动部署软件。

总的过程:1.制作好要部署软件的安装包,2.创建一个Activex控件,在控件注册函数里执行安装包,3.编写INF文件,4,把安装包,Activex控件(dll或ocx),INF文件打包成cab,5.网页通过<OBJECT>标签加载cab包。(注:打数字签名就不阐述了)

----------------------------------------------------------------------------------------------------------------
一、Activex控件的开发

1.用VS创建一个ATL项目,属性默认,直接点完成就行。

2.在控件注册函数DllRegisterServer():里执行你的安装包:(解决方案视图-》打开ALT项目名的cpp文件)

ShellExecute(NULL,_T("open"),m_sSteupFilePath,NULL,NULL,SW_SHOWNORMAL);

3.为ATL项目添加个“ALT控件”:右击项目-》添加类-》ATL控件。

4.得到CLSID:项目解决方案视图里会有个后缀会“idl”的文件,


library AtlstudyLib
{
importlib("stdole2.tlb");
[
uuid(9A66B5F0-3479-463E-9F4D-333BEC742E2E),    //这个就是需要的CLSID
control
]
coclass test
{
[default] interface Itest;
};
};

或者

在添加ATL控件后,解决方案视图里会增加一个htm的测试网页文件,打开,里面就是需要的<OBJECT>标签源码

二、编写INF文件

文件代码如下(取掉了其他可有可无的语句):

[version]

signature="$CHICAGO$"

AdvancedINF=2.0

[Add.Code]

Atlstudy.dll=Atlstudy.dll

STEUP.exe=STEUP.exe

[STEUP.exe]

file-win32-x86=thiscab

DestDir=11

FileVersion=1,0,0,1

[Atlstudy.dll]

file-win32-x86=thiscab

clsid={9A66B5F0-3479-463E-9F4D-333BEC742E2E}

DestDir=11

RegisterServer=yes

FileVersion=1,0,0,1

------------------------------------------

三、编写网页代码(打包cab包软件和证书签名工具可以看我发布的资源)

<OBJECT ID="Client" CLASSID="CLSID:9A66B5F0-3479-463E-9F4D-333BEC742E2E" codebase="ok.cab#version=1,0,0,1"></OBJECT>

把cab包和测试网页放在同一目录。

四、要注意的地方

1、Activex控件,INF,网页代码里的版本号书写需要一致,并且是用“,”逗号隔开的。这样控件的注册只会执行一次。

2、解释下三个版本号的作用:(按执行的先后顺序)

网页里的版本号:用来判断是否执行INF文件。(跟控件版本号做比较)

INF的版本号:用来判断是否需要重新注册控件。(跟控件版本号做比较)

控件版本号:用来判断是否替换原有控件(版本号一样不替换),注册成功后控件的版本号也就是上面两个所比较的对象。

所以:当网页的版本号跟已注册控件版本号一样时,不管你INF文件版号和控件版本号跟原来的是否更新了,都是不会再执行的。其他同理。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: