Win10 IE11 64位ActiveX 编译(Qt)

Win10 IE 程序本身是32位,无论是目录Program Files (x86) 下Internet Explorer中的 iexplore.exe, 还是目录Program Files 下Internet Explorer中的 iexplore.exe,他们统统都是32位的,确认当前IE是32位还是64位的方式也很简单,只需要在地址栏输入:javascript:alert(navigator.userAgent), 弹出的信息提示框中显示内容含Win64,标识是64位的IE;显示内容含Wow64,标识是32位的IE;而64位的ActiveX只能在64位的IE中运行,所有为了使64位ActiveX在Win10 IE11中能正常运行,我们必须要对安装配置文件INF做必要的处理,接下来具体介绍一下发布支持Win10 IE11 的 64位ActiveX的整个流程。

一、功能模块编译和签名

  • 功能代码模块(DLL)编译模式选为X64,编译完成之后,通过Depends查看依赖关系,并把所有的依赖拷贝到同一个目录下。
  • 对未签名的库文件和依赖文件,一一签名,详细签名方式参照(首先要准备好证书文件,如PFX):https://docs.microsoft.com/zh-cn/dotnet/framework/tools/signtool-exe
  • 签名之后的文件,可以在右键->属性中,看到有个数字签名栏,即表示签名成功。

二、 INF安装配置文件的编写

  • [version] 版本信息,一般不需要特别修改的
  • [Deployment] 部署范围,可以选择本机或者当前用户,如InstallScope=machine
  • [Strings] 可以定义一些变量,如注册表键值,CLSID路径等信息
  • [Files.Common] 要安装的文件列表,如dll=Qt5Core.dll Qt5Gui.dll=Qt5Gui.dll 等
  • [Files.Inf] 插件安装信息,如InfFile=KuXun.inf
  • [DestinationDirs] 安装目录,含安装文件和安装配置文件路径,这个路径使用dirids 标识,详细的枚举值参加微软(https://docs.microsoft.com/en-us/windows-hardware/drivers/install/using-dirids
  • 安装文件的具体配置信息,如

[kuxun.dll]

file-win32-x86=thiscab (网上有传要是64位,把file-win32-x86改为file,实践发现,这个不是必须的)

clsid={A348F6CC-765E-4218-B57D-2B9231EG0009}

RegisterServer=yes

RedirectToHKCU=yes

FileVersion=1,0,0

[Qt5Core.dll]

file-win32-x86=thiscab

RegisterServer=no

FileVersion=1,0,0

  • [RegisterFiles] 要注册的模块,如 %11%\%AppPath%\kuxun.dll
  • [RegSettings] 设置注册表的键值,类型要注意一下0x00000000 字符串,  0x00010001Dword类型,如HKCR,%Kuxn%,Version,0x00000000,”1,0,0″; KCU,% Kuxn %,TabProcGrowth,0x00010001,0

 

三、ActiveX控件发布

简单编写一个HTML程序,同时搭建一个IIS服务,就可以测试上面的控件功能了,我这边测试如下图:

四、结束语

支持Win10 IE11 的64bitActiveX发布基本流程就这些了,接下来有机会再分享一下使用Qt如何开发ActiveX控件,如有兴趣,可以私聊沟通,谢谢!

微信、电话(18019436577) Email: wangxy@apps121.com

www.apps121.com