Я тщательно выполнил шаги, описанные в http://msdn.microsoft.com/en-us/library/aa767914(VS.85).aspx, чтобы зарегистрировать пользовательский протокол URL, который я буду использовать для интеграции приложения, которое я пишу на C #, с Pocket Internet Explorer. Идея состоит в том, чтобы нажать на ссылку, похожую на xpto://something/?with=1¶meters=2
, и сразу же открыть приложение.
Вот что со мной происходит:
Если я зарегистрирую только протокол, он вообще не будет работать. IE жалуется с Cannot open 'xpto://something/?with=1¶meters=2'. Either it is not signed with a trusted certificate or one of its components cannot be found.
ошибкой.
Если я также зарегистрирую .xpto
тип файла, используя метод в http://www.1 -script.com / forums / IE-Windows-Mobile-MIME-Обработчик-Что-s-решение? -article7966--15.htm , я могу заставить приложение открываться только тогда, когда URL начинается с xpto://
и заканчивается .xpto
, например xpto://somehost/file?parameters=1.xpto
. Это единственный раз, когда это действительно работает. Никаких ошибок.
Если я регистрирую тип файла только описанным выше способом, использование URL-адреса, например http://somehost/test.xpto
, приводит к тому, что IE отображает диалоговое окно загрузки без возможности непосредственного открытия файла.
Я мог бы пойти с номером 2, но, помимо того, что был чертовски неприятен, я действительно хотел бы знать, что здесь происходит. Это уже второй день, и я не могу найти ответа в интернете по этому поводу. Я просматривал записи в реестре тысячи раз и не нашел ни ошибок, ни опечаток.
Вот мой .inf
для установки в кабине, относительно созданных ключей реестра. Исследуя мобильное устройство с помощью редактора реестра, я обнаружил, что %InstallDir%
настроен просто отлично, кавычки тоже. Первая группа регистрирует тип файла, а вторая - протокол URL.
[RegKeys]
"HKCR",".xpto","","0x00000000","xptofile"
"HKCR",".xpto","Content Type","0x00000000","application/x-xpto"
"HKCR","xptofile","","0x00000000","xpto File"
"HKCR","xptofile","EditKeys","0x00010001","65536"
"HKCR","xptofile\Shell","","0x00000000",""
"HKCR","xptofile\Shell\Open","","0x00000000",""
"HKCR","xptofile\Shell\Open\Command","","0x00000000","""%InstallDir%\xpto.exe"" ""%%1"""
"HKCR","xpto","","0x00000000","XPTO Protocol"
"HKCR","xpto","URL Protocol","0x00000000",""
"HKCR","xpto\DefaultIcon","","0x00000000","xpto.exe,0"
"HKCR","xpto\Shell","","0x00000000",""
"HKCR","xpto\Shell\Open","","0x00000000",""
"HKCR","xpto\Shell\Open\Command","","0x00000000","""%InstallDir%\xpto.exe"" ""%%1"""
Мое приложение находится во внутренней памяти телефона. Что я делаю не так?