返回> 网站首页
[转载]cab包安装activex控件并运行exe
yoours2014-10-18 15:21:57
简介一边听听音乐,一边写写文章。
CAB包是发布activex控件的常用方法,cab包里面包含一个inf文件,对控件安装过程进行描述。这里有关于inf文件的说明。http://msdn.microsoft.com/en-us/library/aa741215(v=vs.85).aspx#infhooksyntax
一般来说cab包下载、安装、注册控件是没有问题的,但是如果希望cab包在安装过程中执行一个exe,该怎么办呢?
(一)setup hook 可以帮助你解决这个问题。
setup hook分为有条件和无条件两种。有条件的setup hook只有满足一定条件时才执行。
因此,可以打一个msi格式的安装包,然后采用setup hook的方式安装:
[Add.Code]
mycontrol.dll=mycontrol.dll
[hook.mycontrol]
run=msiexec.exe /i %EXTRACT_DIR%\mycontrol.msi /qb
setup hook 在windows xp下一般不会遇到问题,但是到了vista以上的操作系统,就会遇到麻烦。因为它会拒绝执行非CAB里面的exe文件。
如果遇到这个问题,可以考虑自己写一个非常小的PrepareInstall.exe,它来运行msiexec.exe。将PrepareInstall.exe打包进cab包。你的inf文件可能是这样:
[Setup Hooks]
preInstall=preInstall
[preInstall]
run="%EXTRACT_DIR%\PrepareInstall.exe" %OBJECT_DIR%
注意,以上代码在vista还是会遇到问题,因为路径。
run="""%EXTRACT_DIR%\PrepareInstall.exe"""
有木有!需要3个双引号!!
(二) 直接把exe作为资源打包到控件
控件释放资源并运行exe
采用CreateProcess或者ShellExecuteEx方法。
这个方法,vista和win7可是要弹出提示信息的哦!
文章评论
1782人参与,0条评论