我有一个网页,当我点击一个按钮时,它应该从网址下载一个exe,并且应该在没有用户干预的情况下自动调用exe。
在Internet Explorer中,我通过部署为.cab文件的activex控件(.ocx)实现了这一点。
我打算将它扩展到chrome和firefox平台。 (第一步至少镀铬)。
我不想使用Java applet(需要删除java依赖项)。我知道我可以通过Firebreath插件实现这一目标,但显然现在不是潜入NPAPI插件的好时机(因为NPAPI已经逐渐消失.Chrome已经开始逐步淘汰NPAPI)。
当我查看NPAPI的替代插件技术时,我偶然发现了Google Native Client。在进一步阅读时,我知道Nacl也不能满足我的需求,因为os调用api将无法在nacl中工作(我希望URLDownloadToFile api或createprocess或shellexecute不会工作。如果我错了,请纠正我)。
我应该选择Native Messaging吗?还有其他替代技术缺失吗?指导我请。
答案 0 :(得分:1)
NPAPI直到它消失将让你做你想做的事;除了Native Messaging是唯一的选择。
正如其他人所说,这是一个真正糟糕的想法(tm)。
答案 1 :(得分:1)
感谢所有人。我最终使用自定义协议处理程序启动应用程序。 http://msdn.microsoft.com/en-us/library/ie/aa767914(v=vs.85).aspx。这符合我的需要。
答案 2 :(得分:0)
如上所述,Chrome的本机消息传递似乎是Chrome的一种方式。
首先,请看一下:此博客条目显示可以使用本机消息传递来启动“calc.exe”。我还没有尝试过 - 但看起来很有希望: https://plus.google.com/+FrancoisBeaufort/posts/jdTrmmZL9Xh
要记住的一件事是,Native Messaging技术只能在Chrome扩展程序中运行,这会打开一整套相关问题。
(1)是否可以为使用组策略的所有用户安装Chrome扩展程序?或通过注册表? 是的,根据http://www.chromium.org/administrators/pre-installed-extensions 稍后编辑:只能通过注册表添加“已发布”扩展名。见 - https://developer.chrome.com/extensions/external_extensions
(2)您能否检测到是否已安装扩展程序? 是的,Chrome Extension: How to detect if an extension is installed using Content Scripts
所以也许可能有一个两阶段的过程:
- 您的用户将前往网页,该网页将测试扩展程序(使用上面的#1)
- 如果不存在,请让用户下载并安装.exe(这将需要交互)。
- .exe将部署扩展文件并将其注册到Chrome(使用上面的#2)
- 在后续访问中,已安装的扩展可用于启动/与现已安装的.exe进行通信(使用Native Messaging)