【问题标题】:What is the alternatives for Java Applet to launch client programs using Chrome browsers?Java Applet 使用 Chrome 浏览器启动客户端程序的替代方案是什么?
【发布时间】:2015-08-09 13:37:28
【问题描述】:

我正在使用 ASP.net 和 C# 开发一个 Web 应用程序。

我的目标是检查客户端计算机上的桌面应用程序。如果它存在,那么我应该启动它。否则,如果它不存在,我们应该下载、安装然后启动它。

我可以使用 Java Applet 开发此模块,但不幸的是,Google 于 2015 年 9 月决定禁用 NPAPI,因此该小程序无法在 Chrome 上运行。

我的问题是关于帮助我实现上述场景的 Applet 替代方案?

【问题讨论】:

标签: java google-chrome applet client-side


【解决方案1】:

据我所知,唯一(半)可行的选择是为 Chrome 用户提供桌面应用程序的 JNLP 文件的链接。然后当/如果 JWS 桌面应用程序启动时,让它向服务器报告“加载正常”,然后“目标应用程序”。已安装/未安装”。

在您的服务器上,等待客户端返回报告的时间。如果过了那个时间,则假定客户端机器根本不支持 Java,并且用户正在检查一些 Web 服务以尝试找出是什么应用程序。打开一个 JNLP!

【讨论】:

  • 不幸的是,Google Chrome 决定放弃对外部协议后台操作的支持 (code.google.com/p/chromium/issues/detail?id=348640),因此从 Google Chrome 45 起,将不支持使用后台调用的 Java Web Start 解决方案。
  • @Bru 什么是“后台呼叫”?
【解决方案2】:

在搜索了实现目标的最合适方式后,我认为使用自定义协议将是从网页访问我的客户端应用程序的一个不错的解决方案。

许多公司都使用此解决方案,例如 Microsoft(使用 mailto:打开 Outlook 应用程序)Apple(使用 itms:打开 iTunes 应用程序)。 p>

以下链接是一个非常好的链接,它讨论了自定义协议: https://support.shotgunsoftware.com/entries/86754-How-to-launch-external-applications-using-custom-protocols-rock-instead-of-http-

【讨论】:

    【解决方案3】:

    一旦 Google Chrome 率先宣布将不再支持 NPAPI,他们也是第一个提供新架构以重写您的代码以在其浏览器上工作的人。你可以看看 Native Messaging,它“可以使用类似于其他消息传递 API 的 API 与本机应用程序交换消息”。问题是这种方法只适用于 Chrome,不能适应其他浏览器。

    一个更有用的方法是 FireBreath,一个后 NPAPI 世界中的浏览器插件。从项目的一位伙伴那里检查以下的话:

    “FireBreath 2 将允许您编写一个在 NPAPI、ActiveX 或通过 Native Messaging 中工作的插件;它即将进入测试阶段。它没有任何真正的绘图支持,但适用于您所描述的。安装过程有点痛苦,但它确实有效。本机消息传递组件使用的 FireWyrm 协议可用于任何允许传递文本数据的连接;应该可以使其与 js-ctypes 在 firefox 或 WEB-RTC 甚至 CORS AJAX 上以某种方式工作。目前我们唯一需要解决的是 Chrome,但我们采用的方式应该可以很好地移植到其他技术。”

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-02
      • 1970-01-01
      • 2021-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多