使用最少的用户步骤部署NPAPI插件

时间:2010-12-17 08:11:14

标签: deployment npapi browser-plugin firebreath

情况:我已经为我的IE用户编写了一个ActiveX控件,它运行得很好。我构建.ocx,CAB,签名,并将其放在带有EMBED标记的站点上。用户加载页面,黄色栏显示是否要安装它:他们所要做的就是点击它,然后我们就关闭了。

现在我需要建立对FF,Chrome和Safari(在Mac上)的支持。根据我的研究,NPAPI就是这样做的方式,Firebreath应该让它变得更容易。但从我所读到的,部署并不那么容易。 Windows用户必须在DLL上运行“regsvr32”(我的网络用户实际上都不会这样做)。我不知道在Mac上会发生什么。我相信用户必须将其复制到/ Library / Internet \ Plugins /这样的目录,这也是一个非首发的部署。 Firefox用户可以下载/运行.xpi。 Chrome应该运行.crx。

有没有人有这方面的经验?你如何为其他三大浏览器做一个易于用户运行的NPAPI插件部署?

3 个答案:

答案 0 :(得分:15)

这是FireBreath用户提出的一个问题,所以我可能会在一个比项目谷歌小组更容易找到的论坛上更详细地回复。

首先,要清除regsvr32,FireBreath确实支持所有浏览器的“自注册”;这意味着当你调用regsvr32时,它不仅为IE而且为NPAPI浏览器安装注册表键,使用链接到DReJ的方法(对于该信息为+1,顺便说一句,谢谢。许多人不知道在哪里找到它)。

但是,在安装程序世界和Microsoft中强烈建议不要使用自注册DLL。这有很多原因。您在总结帖子中的其他安装选项方面做得非常好;您可以在IE上使用.cab,在Firefox上使用.XPI,但当然这些在其他浏览器上没有帮助。

FireBreath团队(我领导)推荐的方法是为所有浏览器使用MSI安装程序。就个人而言,我不喜欢在不同的浏览器上安装不同的东西,所以我使用javascript来检测插件的存在(或不存在),然后提示用户下载并运行MSI安装程序。

FireBreath具有“内置”支持,可以使用WiX构建MSI安装程序。如果您在计算机上安装WiX 3.0或更高版本并重新运行准备脚本,它将创建一个_WiXInstaller项目,该项目将构建一个基本的MSI,以便在Visual Studio构建过程中为所有浏览器安装插件。您可以修改将保留在主目录中的.wxs模板以进行自定义。

可以在FireBreath维基上找到更多信息: http://www.firebreath.org/display/documentation/WiX+Installer+Help http://www.firebreath.org/display/~me@iaincollins.com/Potential+Installer+Improvements

如果您真的喜欢使用.cab安装程序进行IE浏览器(我遇到了问题,但有些人似乎对它们有好运),您可以在CAB中分发MSI文件并让它在运行时运行CAB已安装。这样做的好处是,当您安装MSI时,它会安装IE,Firefox,Safari,Chrome和Opera(以及与这些浏览器使用的相同插件技术兼容的其他浏览器)的所有内容。

快速说明,MSI是安装插件的理想解决方案(与使用像regsvr32这样调用DllRegisterServer的东西相反)的原因是MSI是基于事务的,所以当你卸载它时总会反转的是投入这意味着你不必担心支持卸载10个不同的旧安装程序版本,这些版本将东西放在不同的地方等,因为MSI系统负责在升级时干净地卸载所有内容。

希望有所帮助!

答案 1 :(得分:1)

对于NPAPI插件,您不应运行“regsvr32”,在Windows中您需要将一些内容写入寄存器,在Mac或Linux上,您需要将插件复制到指定位置(请参阅"Installing Plug-ins")。我认为在Windows上部署NPAPI插件的最简单方法是创建将安装插件的activeX和NPAPI版本的Windows安装程序(例如,您可以查看如何对Unity3D等商业插件进行部署,{{ 3}}或Roozz)。 Mac也是如此 - 只需创建安装程序。

答案 2 :(得分:1)

我不知道有任何方法可以在Safari中安装插件。

另外,请记住,虽然您可能认为扩展样式部署对用户来说更容易,但Mac用户使用多个浏览器并不罕见。如果你让他们在每个浏览器中重新安装你的插件,他们会感到困惑(因为这不是通常在Mac上部署浏览器插件的方式)并且烦恼。安装程序或手动拖放安装是在Mac上部署插件的标准方法。