Написание собственного обработчика протокола, переносимого на Firefox, Chrome и IE, работающего на Window
Я пишу обработчик протокола для запуска Java-приложения, вызывая такую команду, как java -jar myApp "%1". В настоящее время я реализовал его для Chrome, и он выглядит правильно. К сожалению, у меня не одинаковое поведение для Firefox и IE (странно, а? XD)
Здесь моя реализация.
Протокол называется dgh. Во время первой установки мое приложение установило следующие ключи в реестре Windows
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\dgh]
@="URL:DgHome Protocol"
"URL Procol"=""
[HKEY_CLASSES_ROOT\dgh\DefaultIcon]
@="C:/DGHOME/IPlusConf.exe,1"
[HKEY_CLASSES_ROOT\dgh\shell]
[HKEY_CLASSES_ROOT\dgh\shell\open]
[HKEY_CLASSES_ROOT\dgh\shell\open\command]
@="java -jar C:/DGHOME/Pch/lib/pch.teleconsulto.jar \"%1\""
На хроме этого достаточно. В Firefox мне пришлось добавить несколько настроек в about: config. Следуя MDN в Firefox, я установил следующее
network.protocol-handler.expose.dgh;true
network.protocol-handler.external.dgh;true
network.protocol-handler.warn-external.dgh;false
Таким образом Firefox по крайней мере спрашивает меня, хочу ли я запустить приложение, и просит, чтобы я выбрал одно: я не хочу этого, я бы вызвал команду, которую я установил, и в первый раз уведомил бы пользователя об этом:
В IE ничего не происходит, он говорит, что не могу открыть ссылку на веб-страницу по моей ссылке.
Вот набор ссылок, которые я использовал в качестве теста
<a href="dgh://call/open?id='kit1.teleconsulto'">Open call to kit1.teleconsulto</a>
<a href="dgh://teleconsult/start?id='kit1.teleconsulto'">
Open teleconsult to kit1.teleconsulto</a>
<a href="dgh://call/close">Close call</a>
<a href="dgh://call/end">Close client</a>
<a href="dgh://stethoscope/start">On Phonendo</a>
Вот некоторые ссылки: Установка и регистрация обработчиков протокола http://msdn.microsoft.com/en-us/library/aa767916%28VS.85%29.aspx
Я искренне надеюсь, что кто-то может мне помочь
2 ответа
Проблема в том, что вы вызываете jar непосредственно в обработчике протокола. Вам нужно вызвать java.exe с параметром -jar
Ваш раздел реестра должен выглядеть следующим образом
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\digitalmgi]
@="URL:digitalmgi protocol"
"URL Protocol"=""
[HKEY_CLASSES_ROOT\digitalmgi\DefaultIcon]
@="C:\\myCoolIcon.ico"
[HKEY_CLASSES_ROOT\digitalmgi\Shell]
[HKEY_CLASSES_ROOT\digitalmgi\Shell\Open]
[HKEY_CLASSES_ROOT\digitalmgi\Shell\Open\Command]
@="\"C:\\Program Files\\Java\\jre7\\bin\\java.exe\" -jar \"C:\\MyPath\\myJar.jar\" \"%1\""
Я понимаю, что вы применили подход регистрации в системном реестре, но, если вы хотите использовать другой подход, в Generic-Protocol-Handler есть универсальное решение, которое наверняка решит проблему совместимости между браузерами.
Пожалуйста, отметьте это как Ответ, если это поможет:)