Как я могу получить лицензию на приложение Windows WPF

Я разработал небольшое приложение, которое я хотел бы попробовать и продать, но я не знаком с тем, как лучше всего это делать.

  • Как я могу заблокировать программу для пробного использования1.

  • Как я могу заняться принятием платежей?

Принимая во внимание, что я группа одного человека с небольшими деньгами, я надеялся на решение, которое было бы бесплатным или недорогим, эффективным, безопасным и простым в реализации и обслуживании. Это не то, что у меня есть большой опыт, поскольку я обычно разрабатывал для государственного сектора, где они покупают решение в качестве хеллинга, и мы никогда не лицензировали его.

Любая помощь будет действительно оценена. Спасибо,

В

Ответы

Ответ 1

Я могу рассказать вам, как я это делаю. Отказ от ответственности: ваш пробег может отличаться. Это касается предотвращения случайного пиратства простых WinForms или WPF или другого настольного приложения. Он не особенно устойчив или не защищен от сложного взлома, но он отлично справляется с предотвращением случайного пиратства.

  • Для лицензирования я попробовал несколько сторонних решений. Они все довольно просты в использовании для номинального случая предотвращения случайного пиратства, что, конечно, если единственное пиратство, о котором вы действительно должны беспокоиться.

  • Я обнаружил, что ни один из поставщиков лицензий не был действительно совместим с существующими платежными процессорами/шлюзами. Есть несколько решений "все-в-одном", но уровень технической задолженности там был неприемлемым для меня (фрилансер и единственный разработчик). Я искал простой способ перейти от ссылки "Купить сейчас" на веб-сайте, чтобы разблокировать программное обеспечение для рабочего стола после покупки. Некоторые из существующих решений "все-в-одном" являются излишними для этой цели, некоторые полностью игнорируют "покупку".

  • Я закончил использование Xml Digital Signatures, чтобы подписывать файлы лицензий с закрытым ключом приложения, который никогда не распространяется среди пользователей. Результат: у вас есть файл .LIC или .LICX на целевой машине, который пользователи могут читать (это простой текст, за исключением окутанной подписи), но не изменяются. (Вернее, они не могут изменить его, не зная, что они его модифицировали.) Этот маленький файл является ключом для всей системы.

  • Когда приложение загружается, он проверяет, что подпись XML действительна (с использованием открытого ключа приложения, который распространяется вместе с приложением), и если он действителен, он считывает информацию из файла лицензии и включает/на основе этого отключает определенные функции. Например, ваш файл лицензии может содержать дату истечения срока действия продукта или пару уникальных сведений о машине (будьте осторожны, всегда, чтобы не причинять неудобства вашим законным пользователям этим... вы не хотите, чтобы им приходилось повторно обращаться за лицензией каждый раз, когда они меняют жесткий диск).

  • Как дополнительный (и немного более инвазивный) шаг, вы можете подключить приложение к вашему серверу, хотя это приводит к проблемам с простоями сервера и т.д. и т.д. Некоторые разработчики готовы мириться с этим, другие - нет.

  • Теперь для части покупки существует много вариантов. Paypal является самым простым. Вы можете или не хотите, чтобы их тарифные планы, но это абсолютный cinch, чтобы встать и работать с Paypal.

  • Для этого вам нужна учетная запись Premier или Business, а не личная учетная запись. Примечание. В документах Paypal иногда говорится, что вам нужна учетная запись Paypal Business. Всякий раз, когда они говорят это, они на самом деле означают "учетную запись Paypal Business или Premier".

  • Теперь сделайте себе сайт продукта и настройте кнопки Buy Now и т.д. Когда пользователь совершит покупку, ваш сайт получит пинг из Paypal IPN, который является их службой уведомления. Этот пинг - это просто вызов определенной конечной точки HTTP на вашем веб-сайте и содержит всю необходимую информацию о покупке. В основном, адрес электронной почты пользователя...

  • (Хорошо, мне кажется, что я должен упомянуть: Paypal вместе с большинством других законных процессоров имеет "песочницу", где вы можете протестировать все это, прежде чем отправляться в прямом эфире. Разве чудеса дают вам теплое нечеткое о том, жить, с деньгами на линии.)

  • Что вы будете использовать для автоматического отправки пользователю кода активации после покупки, поэтому им не нужно ждать 24 часа, чтобы вы вручную отправили им код. Сохраните этот код активации (который по этому сценарию может быть любым уникальным, трудно угадывающим номером, например GUID, prettified или not) в БД, с подсчетом использования, который вы будете отслеживать для обнаружения повторяющихся кодов.

  • Пользователь вводит код активации в программное обеспечение через экран, который вы предоставляете.

  • Программное обеспечение связывается с сервером по https (это одноразовая вещь, которая происходит только при разблокировке программного обеспечения) и говорит: "Эй, этот код лицензии, который только что дал мне?"

  • Если входящий код активации соответствует коду, хранящемуся в базе данных на момент продажи, и этот код активации еще не подтвержден, то Success!

  • Затем серверу необходимо создать файл лицензии, который представляет собой чрезвычайно простой XML или текстовый файл, содержащий "то, что разрешена этой копией программного обеспечения". Там нет стандарта для того, что он должен содержать, только несколько соглашений.

  • Сервер подписывает файл лицензии с закрытым ключом приложения и возвращает его как поток данных в ваше приложение...

  • Что сохраняет его как файл .LIC или .LICX(или любой другой файл расширения), который затем проверяет время загрузки в соответствии с шагом 3.

Это сработало очень хорошо для меня, и это - cinch для реализации. Ключом всего этого является просто: доверять этим XML DSigs. Когда отсутствует файл LIC, вы по умолчанию используете пробный режим. Когда сиг изменен, вы переключаетесь в пробный режим. Только когда файл LIC присутствует, правильно подписан и содержит правильную информацию, вы затем (в коде) открываете доступ к "полной" функциональности.

Кроме того, в вашем коде нужно ввести несколько контрольных точек. Я делаю это при запуске приложения, другой - на холостом ходу, а другой перед тем, как войти в ключевые функциональные области. Поэтому, если кто-то изменит код, и они могут, им, по крайней мере, придется немного поработать над всеми проверками лицензии. Конечно, ничто из того, что вы можете сделать, не может помешать людям исправлять эти проверки. Вы просто хотите сделать это немного сложнее.

Ответ 2

Если вы хотите сделать это правильно, я бы честно рекомендовал покупать доверенное стороннее решение для обеих этих вещей. Существует несколько лицензионных пакетов для .Net(мы используем Desaware для наших продуктов, хотя я не работал с ними напрямую так что я не мог дать подробные рекомендации. Кажется, это достаточно просто для того, что я подвергался). Никакая суета, никаких ошибок и выигрыш в долгосрочной перспективе огромны с точки зрения экономии времени.

Услуги сторонних платежей могут обрабатывать транзакции онлайн-кредитных карт для вас, и всегда есть PayPal. Google за "то, как принимать платежи по кредитным картам в Интернете", и вы придумаете бесконечных поставщиков решений для торговцев.

Если вы предпочитаете потратить время на создание системы лицензирования самостоятельно, fooobar.com/questions/70206/... - довольно хороший ресурс для рассмотрения различных аспектов.

Ответ 3

Для приложений .NET вам понадобится использовать Software Projection and Licensing. Есть сотни вариантов, от очень недорогих (и статей о том, как сворачивать свои собственные) до очень надежных коммерческих инструментов.

Ответ 4

Вы можете рассмотреть CryptoLicensing For. Net - он предоставляет варианты как для полного, так и для пробного использования (дни использования, уникальные дни использования, и т.д). Он также поставляется с готовым к использованию сервером лицензий с интеграторами электронной торговли для paypal, shareit, plimus и т.д.