引言就不写了,直接讲过程,希望对大家有帮助。
-----------------------------------------------------------------------------------------------------------------
开发环境:WIN7 VS2010
目的:通过IE,自动部署软件。
总的过程:1.制作好要部署软件的安装包,2.创建一个Activex控件,在控件注册函数里执行安装包,3.编写INF文件,4,把安装包,Activex控件(dll或ocx),INF文件打包成cab,5.网页通过
----------------------------------------------------------------------------------------------------------------
一、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文件版号和控件版本号跟原来的是否更新了,都是不会再执行的。其他同理。