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

引言就不写了,直接讲过程,希望对大家有帮助。

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

开发环境:WIN7 VS2010

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

总的过程:1.制作好要部署软件的安装包,2.创建一个Activex控件,在控件注册函数里执行安装包,3.编写INF文件,4,把安装包,Activex控件(dll或ocx),INF文件打包成cab,5.网页通过标签加载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的测试网页文件,打开,里面就是需要的标签源码

二、编写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包软件和证书签名工具可以看我发布的资源

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

四、要注意的地方

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

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

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

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

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

所以:当网页的版本号跟已注册控件版本号一样时,不管你INF文件版号和控件版本号跟原来的是否更新了,都是不会再执行的。其他同理。

你可能感兴趣的:(基础知识)