15

情况:我已经为我的 IE 用户编写了一个运行良好的 ActiveX 控件。我构建了 .ocx,将其 CAB,签名,然后使用 EMBED 标签将其放在网站上。用户加载页面,黄色栏出现询问他们是否要安装它:他们所要做的就是点击它,我们就走了。

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

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

4

3 回答 3

15

这是 FireBreath 用户经常提出的一个问题,所以我可能是时候在一个比项目 google 小组更容易找到的论坛上做出更详细的回答了。

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

但是,安装程序界和 Microsoft 强烈反对自行注册 DLL。这有很多原因。您已经很好地总结了帖子中的其他安装选项;您可以在 IE 上使用 .cab 并在 firefox 上使用 .XPI,但当然这些在其他浏览器上对您没有帮助。

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

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

更多信息可以在 FireBreath wiki 上找到: http ://www.firebreath.org/display/documentation/WiX+Installer+Help http://www.firebreath.org/display/~me@iaincollins.com/Potential+安装程序+改进

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

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

希望有帮助!

于 2010-12-17T17:10:34.983 回答
1

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

于 2010-12-17T08:29:59.300 回答
1

我不知道从 Safari 中安装插件的任何方法。

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

于 2010-12-20T14:19:47.687 回答