返回> 网站首页 

[转载]cab包安装activex控件并运行exe

yoours2014-10-18 15:21:57 阅读 1614

简介一边听听音乐,一边写写文章。

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可是要弹出提示信息的哦!
微信小程序扫码登陆

文章评论

1614人参与,0条评论