Написание собственного обработчика протокола, переносимого на 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 есть универсальное решение, которое наверняка решит проблему совместимости между браузерами.

Пожалуйста, отметьте это как Ответ, если это поможет:)

Другие вопросы по тегам