如何同时支持32位和64位组件自动安装

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何同时支持32位和64位组件自动安装相关的知识,希望对你有一定的参考价值。

weboffice论坛

ActiveX可以通过浏览器自动从服务器安装到客户端,但是IE目前有32位版本和64位版本,对应的ActiveX也分为32位版本和64位版本;由于是两个版本的两个不同的ocx或者dll,如何同一套代码实现自动识别浏览器安装对应的版本?
因为版本升级需要进行修改代码中的版本号,所以我们从不把自动安装组件的代码直接写到前台页面中,而是写一个公用的js文件“Loadweboffice.js”,所有需要使用组件的页面直接引用即可。更新新版本时也只需要修改这一个js即可,减少以后的维护量和出错机会。

普通的Loadweboffice.js代码如下:

      var s = "";
      s = "<OBJECT id=WebOffice1 align=‘middle‘ style=‘LEFT: 0px; WIDTH: 100%; TOP: 0px; HEIGHT: 100%‘"
      + "classid=clsid:E77E049B-23FC-4DB8-B756-60529A35FAD5";
      +" codebase=‘./weboffice.cab#Version=7,0,0,5‘>"
      + "<PARAM NAME=‘_Version‘ VALUE=‘65536‘>"
      + "<PARAM NAME=‘_ExtentX‘ VALUE=‘17410‘>"
      + "<PARAM NAME=‘_ExtentY‘ VALUE=‘10874‘>"
      + "<PARAM NAME=‘_StockProps‘ VALUE=‘0‘>"
      + "</OBJECT>";
      document.write(s)

js中有可以对浏览器位数判断的方法:

window.navigator.platform

他的返回值位:Win32或Win64

我们可以根据这一返回值让浏览器选择自动加载服务器目录下对应的ActiveX版本,做到自动识别32和64位。

修改后Loadweboffice.js代码如下:

      var s = "";
      s = "<OBJECT id=WebOffice1 align=‘middle‘ style=‘LEFT: 0px; WIDTH: 100%; TOP: 0px; HEIGHT: 100%‘"
      + "classid=clsid:E77E049B-23FC-4DB8-B756-60529A35FAD5";
      var iev=window.navigator.platform;
      if(iev=="Win32"){
         +" codebase=‘./weboffice-x32.cab#Version=7,0,0,5‘>"
      }else{
         +" codebase=‘./weboffice-x64.cab#Version=7,0,0,5‘>"
      }
      + "<PARAM NAME=‘_Version‘ VALUE=‘65536‘>"
      + "<PARAM NAME=‘_ExtentX‘ VALUE=‘17410‘>"
      + "<PARAM NAME=‘_ExtentY‘ VALUE=‘10874‘>"
      + "<PARAM NAME=‘_StockProps‘ VALUE=‘0‘>"
      + "</OBJECT>";
      document.write(s)

注:自动安装仅限IE浏览器,目前其他火狐,谷歌等浏览器还没有找到自动安装的方法;

以上是关于如何同时支持32位和64位组件自动安装的主要内容,如果未能解决你的问题,请参考以下文章

如何在同时拥有 64 位和 32 位版本的同时安装 64 位软件包?

当同时安装 32 位和 64 位 JVM 时,如何使用 32 位 JVM 强制运行 Jar 文件?

如何在64位windows7上同时使用32位和64位的Eclipse

32位和64位的区别

是否可以在 Windows 7 上同时安装 32 位和 64 位 Java?

32位和Java中的64位JDBC同时