Но я не могу делать все, что эффективно, и мне нужно будет понять это на Mac / OSX тоже. Поэтому я хотел бы поделиться тем, что я узнал, и использовать дискуссию, чтобы заполнить пробелы и сделать это универсальное место для обработки в Bitcoin строки URI. Кроме того, если вы знаете, правильный способ сделать это в Unity и KDE, пожалуйста, дайте мне знать!
Создание и анализ "Bitcoin:" URI Струны:
Это самая легкая часть, которая полностью документирована в BIP 21: URI схемы. Вот простой пример того, как вы включите его (с помощью моего донорства адреса, конечно!)
Код:
...который выглядит следующим образом: Пожертвовать 1.0 BTC к проекту Оружейной!
Для того, чтобы закодировать URI-зарезервированные символы, такие как пробелы, различные знаки препинания и т.д., вам необходимо в процентов схема кодирования. Она состоит из приема сообщения, которое вы хотите поместить в URL, и заменить все пробелы с "% 20"Все восклицательные с% 21 и т.д. Это все по этой ссылке.
я верить что "метка" Поле для маркировки адрес и что "сообщение" поле предназначено для маркировки сделка. то есть, если вы нажмете на ссылку, которая имеет метку "Ключ ЕТО в" и беспорядок "Пожертвование получить его шифрования семинар", То "Ключ ЕТО в" будет отображаться в адресной книге, и "Пожертвование получить ..." будет отображаться на гроссбух сделки. Для адресов, которые только когда-либо использовали один раз, я не думаю, что это важно, но это, как я интерпретирую разницу между ними.
Я думаю, что оба эти поля, где реальная стоимость Bitcoin URL-адресов происходит. Торговцы лучше оборудованы, чтобы создать эти записи поля автоматически, и может вставить такие вещи, как Приказу, информация о покупке и т.д. Может быть, даже контактную информацию. Затем пользователь заканчивает с полной историей покупки и документацией в кошельке без каких-либо усилий.
ОБНОВИТЬ: Сейчас кажется, что хорошая идея использовать только "метка =" поле для любой информации, которая должна быть сохранена в бумажнике. Я считаю, что Bitcoin-Qt не спасет "сообщение =" Данные, которые использовали, чтобы быть описана как "сообщение для отображения после URI щелкают" (или что-то типа того). Я буду следить с дэвов об этом.
Регистрация приложения с операционной системой: Windows:
Это было пугающим сначала, но после некоторых исследований я обнаружил, что это всего лишь несколько ключевых изменений реестра. И, конечно же, я использую Python, так что ничего легко ("импорт _winreg"). Мой питон код делает это в ArmoryQt.py вокруг линии 500. Следующий процесс выполняется каждый раз, когда Оружейная открытый:
- Проверьте "HKEY_CLASSES_ROOT \ Bitcoin \ оболочки \ открытая команда \" если она существует, и если он установлен на что-либо (не должно быть изменено)
- Если нет, проверьте "HKEY_CURRENT_USER \ Software \ Classes \ Bitcoin \ оболочки \ открытой команды \" если она существует, и он настроен на что-нибудь.
- Если он установлен в другое приложение, всплывающее окно сообщения с просьбой, если они хотят использовать эту программу по умолчанию
- Если он не установлен или не существует, или пользователь подтверждает, что они хотят, чтобы сделать его по умолчанию, создать и установить все следующие ключи реестра:
Код:
HKEY_CURRENT_USER \ Software \ Classes \ Bitcoin Имя: "" Окружение: "URL: Протокол Bitcoin"
HKEY_CURRENT_USER \ Software \ Classes \ Bitcoin Имя: "Протокол URL" Окружение: ""
HKEY_CURRENT_USER \ Software \ Classes \ Bitcoin \ оболочки
HKEY_CURRENT_USER \ Software \ Classes \ Bitcoin \ оболочки \ открыт
HKEY_CURRENT_USER \ Software \ Classes \ Bitcoin \ оболочки \ открытым \ Имя команды: "" Окружение: "C: \ Путь \ К \ program.exe% 1"
HKEY_CURRENT_USER \ Software \ Classes \ Bitcoin \ DefaultIcon Имя: "" Окружение: "C: \ Путь \ К \ Program \ appicon.ico"
- Где я помещал имя =="" означает набор параметров по умолчанию для этого ключа (каждая запись имеет значение по умолчанию). Python использует пустую строку для ссылки на него
Не изменяйте объекты HKEY_CLASSES_ROOT - вы не можете сделать это без администратора / корень, во всяком случае. Но я думаю, что это действительно нужно идти под HKEY_CURRENT_USER, который локальные настройки для этого пользователя, и они Можно быть изменены программой пользовательского уровня по загрузке приложения. Тем не менее, вы можете добавить опцию установки, которая модифицирует "HKEY_CLASSES_ROOT" чтобы установить его в качестве значения по умолчанию для всех пользователей (которые пользователь может изменить за свой счет, используя ключи реестра HKEY_CURRENT_USER).
Обновление: Diapolo упоминается способ перезаписи ключей реестра с помощью файла .reg. Это может быть полезно во время установки, хотя это будет перезаписывать ключи независимо от того, что там уже. Я уверен, что есть простой способ расширить это, хотя.
Регистрация приложения с операционной системой: Linux:
Я получил эту работу в Ubuntu, успешно протестирована на 9.04 до 12.04. Однако это решение, возможно, работает только для Gnome, и 10.10+ (или, возможно, 11.04+), как представляется, ошибка в рабочем столе Unity, который требует корневого исправления. Я не нашел решение на уровне пользователя для версии Unity на базе.
Gnome-Based Desktop
Очень похоже на решение реестра Windows, но с использованием GConf-редактор вместо этого. Я не знаю, как изменить его непосредственно через питон, так что я просто собрал правильные вызовы командной строки и выполнять их с помощью subprocess.Popen (). Проверьте наличие существующего обработчика [уровень пользователя] с помощью команды:
Код:
gconftool-2 --get / настольные / гном / URL-обработчики / Bitcoin / команда
Затем, чтобы установить его, я использую следующие вызовы:
Код:
gconftool-2 -t строка -s / настольные / гном / URL-обработчики / Bitcoin / команда "питон /usr/share/armory/ArmoryQt.py "% s"
gconftool-2 -s / настольные / гном / URL-обработчики / Bitcoin / needs_terminal ложь -t BOOL
gconftool-2 -t BOOL -s / настольные / гном / URL-обработчики / Bitcoin / включена правда
Вы можете увидеть, где я это делать в ArmoryQt.py вокруг линии 465. Если другое приложение установлено, и это первый раз, когда пользователь загрузил Оружейным, я пропускаю окно вопроса ... пользователь имеет достаточно, чтобы беспокоиться о с этой новой программой ...
Unity-Based Desktop (и, возможно, KDE ...?)
Это работает для Ubuntu 11.04+, а также показывает один из способов, чтобы получить ваше приложение в меню приложений пользователя. Обратите внимание, что это решение является исправление корневого уровня: вы не собираетесь быть в состоянии сделать это для на нагрузке, если пользователь не работает приложение с разрешения корня / администратора. Поскольку материал gconftool-2 BORKED в 11.04+. Для установки собственного приложения в меню, необходимо создать на рабочий стол файл: Мой файл armory.desktop выглядит следующим образом:
котировка
[Desktop запись]
Type = Application
Name = Оружейная
Клиент GenericName = Bitcoin
Комментарий = приложение для управления Полнофункциональный Bitcoin кошелек
Категории = Qt; Сеть;
Exec = питон /usr/share/armory/ArmoryQt.py % U
Icon = armoryicon
StartupNotify = ложь
Terminal = ложь
Mimetype = х-схема обработчика / Биткойн
Type = Application
Name = Оружейная
Клиент GenericName = Bitcoin
Комментарий = приложение для управления Полнофункциональный Bitcoin кошелек
Категории = Qt; Сеть;
Exec = питон /usr/share/armory/ArmoryQt.py % U
Icon = armoryicon
StartupNotify = ложь
Terminal = ложь
Mimetype = х-схема обработчика / Биткойн
Текст, который выделен жирным оставляется на Ubuntu 9.04-10.10. Он входит в 11.04+, так что он постоянно регистрирует приложение с Ubuntu во время установки. Я считаю, что корень нужно изменить. Конечно, только имея файл на рабочем столе сделал недостаточно, он должен быть установлен:
Код:
XDG-значок-ресурс установки --novendor --context приложения --size 64 /usr/share/armory/img/armory_icon_64x64.png armoryicon
XDG-настольное меню установки --novendor /usr/share/applications/armory.desktop
По крайней мере, это можно сделать и поставить в Makefile, и вам не придется иметь дело с дополнительными операциями запуска ... но это вроде груб с другими разработчиками клиента. Я рад принять рекомендации о том, как это можно было бы улучшить. А также поддержка не-Gnome на основе менеджеров рабочего стола.
Регистрация приложения с операционной системой: Mac OS X:
Я ничего не получил. Я даже не пытался. Может быть, кто-то может просветить меня, в подготовке того, чтобы поддерживать его в Оружейной один день (я обещаю, Оружейная будет поддерживать Mac ... в конце концов).