1

我有一个网页,当我单击一个按钮时,它应该从一个 url 下载一个 exe,并且该 exe 应该在没有用户干预的情况下自动调用。

在 Internet Explorer 中,我通过部署为 .cab 文件的 activex 控件 (.ocx) 实现了这一点。

我也计划将其扩展到 chrome 和 firefox 平台。(第一步至少镀铬)。

我不想使用 Java 小程序(需要删除 java 依赖项)。我知道我可以通过 Firebreath 插件实现这一点,但显然现在不是深入研究 NPAPI 插件的好时机(因为 NPAPI 已经逐渐淡出。Chrome 已经开始逐步淘汰 NPAPI)。

当我研究 NPAPI 的替代插件技术时,我偶然发现了 Google Native Client。在进一步阅读时,我知道 Nacl 也不适合我的需求,因为 os 调用 api 在 nacl 中不起作用(我希望 URLDownloadToFile api 或 createprocess 或 shellexecute 不起作用。如果我错了,请纠正我)。

我应该去本地消息传递吗?是否缺少其他替代技术?请指导我。

4

3 回答 3

1

NPAPI 直到它消失才会让你做你想做的事;除了 Native Messaging 是唯一的选择。

正如其他人所提到的,这是一个非常糟糕的主意(tm)。

于 2014-04-18T02:23:18.923 回答
1

感谢所有人。我终于解决了 Launch Application Using Custom Protocol Handler 。http://msdn.microsoft.com/en-us/library/ie/aa767914(v=vs.85).aspx。这符合我的需要。

于 2014-06-04T09:59:06.077 回答
0

如上所述,Chrome 的本地消息传递似乎是要走的路 - 在 Chrome 上。

首先,请看这里:此博客条目显示本机消息传递可用于启动“calc.exe”。我自己还没有尝试过 - 但它看起来很有希望:https: //plus.google.com/+FrancoisBeaufort/posts/jdTrmmZL9Xh

要记住的一件事是,本机消息传递技术仅适用于 Chrome 扩展程序,这会引发一整套相关问题。

(1) 是否可以使用组策略为所有用户安装 Chrome 扩展程序?或通过注册表?- 是的,根据http://www.chromium.org/administrators/pre-installed-extensions 稍后编辑:只能通过注册表添加“已发布”扩展。见 - https://developer.chrome.com/extensions/external_extensions

(2) 你能检测出是否已经安装了一个扩展吗?-是的,Chrome 扩展程序:如何检测是否使用内容脚本安装了扩展程序

所以也许它可能有一个两阶段的过程:

-您的用户将前往网页,该网页将测试扩展(使用上面的#1)

- 如果它不存在,让用户下载并安装 .exe(这将需要交互)。

- .exe 将部署扩展文件并将其注册到 Chrome(使用上面的#2)

- 在随后的访问中,已安装的扩展程序可用于启动/与现在已安装的 .exe 通信(使用本机消息传递)

于 2014-05-26T14:37:20.283 回答