日志
Win10 IE11 64位ActiveX 编译(Qt)
2020-04-02 16:01
Win10 IE 程序本身是32位,无论是目录ProgramFiles (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的整个流程。
一、功能模块编译和签名 1、 功能代码模块(DLL)编译模式选为X64,编译完成之后,通过Depends查看依赖关系,并把所有的依赖拷贝到同一个目录下。 2、 对未签名的库文件和依赖文件,一一签名,详细签名方式参照(首先要准备好证书文件,如PFX):https://docs.microsoft.com/zh-cn/dotnet/framework/tools/signtool-exe 3、 签名之后的文件,可以在右键->属性中,看到有个数字签名栏,即表示签名成功。 二、INF安装配置文件的编写 1、 [version] 版本信息,一般不需要特别修改的 2、 [Deployment] 部署范围,可以选择本机或者当前用户,如InstallScope=machine 3、 [Strings] 可以定义一些变量,如注册表键值,CLSID路径等信息 4、 [Files.Common] 要安装的文件列表,如Qt5Core.dll=Qt5Core.dll Qt5Gui.dll=Qt5Gui.dll 等 5、 [Files.Inf] 插件安装信息,如InfFile=KuXun.inf 6、 [DestinationDirs] 安装目录,含安装文件和安装配置文件路径,这个路径使用dirids 标识,详细的枚举值参加微软(https://docs.microsoft.com/en-us/windows-hardware/drivers/install/using-dirids) 7、 安装文件的具体配置信息,如 [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 8、 [RegisterFiles] 要注册的模块,如 %11%%AppPath%kuxun.dll 9、 [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 |