Нужен совет по внедрению ограниченного по времени пробного периода

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

Я разрабатываю на C++ / Qt. Предполагаемая платформа - Windows / Mac / Linux.

Спасибо за ваш совет!

Не связано, но имейте в виду, что если вы разрабатываете коммерческие приложения с использованием QT, у вас должен есть лицензия разработчика QT. Лицензия QT запрещает использование редакции с открытым исходным кодом для коммерческого программного обеспечения, которое включает условно-бесплатное ПО. Подробнее см. trolltech.com/products/appdev/licensing/licensing.

Mihai Limbășan 13.10.2008 20:10

Спасибо за совет. У нас есть коммерческая лицензия. Не хотелось бы троллей расстраивать ...

JimDaniel 13.10.2008 20:52

Приятно слышать :) Trolltech так много дал сообществу, что я чувствую необходимость защищать их, даже если это, вероятно, не требуется ... Рад видеть, что вы их поддерживаете.

Mihai Limbășan 13.10.2008 23:58
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
22
3
9 381
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Что бы вы ни делали, внимательно следите за системной датой. Самый старый трюк в книге - установить приложение в какой-то момент в будущем, а затем вернуться к реальной дате после того, как приложение сохранит глупую дату при первом запуске. Может быть, синхронизировать ключ с онлайн-хранилищем?

Чтобы этого не произошло, можно использовать абсолютное значение System.currentTimeMillis () - expirationDate.getTimeMillis (); Извините, я java парень. С уважением, Штефф

Snicolas 30.05.2011 20:35

Если у вас [довольно] вероятно, что у вас будет сетевое соединение, вы можете зарегистрировать установщик на своем веб-сайте, а затем проверять его каждый раз при запуске.

Если это невозможно, запись значения в точку файловой системы, которая может быть изменена во всем мире (запись реестра, запись в файле / etc conf и т. д.), Может оказаться приемлемой.

Будьте осторожны с этим. Пользователи очень настороженно относятся к программам, которые «звонят домой» - у них нет возможности узнать, что они отправляют в ответ, это могут быть номера их кредитных карт и банковские пароли, все, что они знают.

Head Geek 14.10.2008 06:38
Ответ принят как подходящий

От чего и чего не защищать:

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

Большинство людей подумают, что пытаться обойти пробный период - это слишком много работы, если существует хотя бы простой механизм. Например, люди всегда могут использовать filemon / regmon, чтобы увидеть, какие файлы и записи реестра меняются при установке вашего программного обеспечения.

При этом лучше всего использовать простой механизм, потому что он тратит меньше времени.

Вот несколько идей:

  • Вы можете производить подсчет тиков где-нибудь в реестре для каждого уникального дня. Если количество тиков> 30, покажите им просроченное сообщение.
  • Вы можете сохранить дату установки, но постарайтесь проверить, доступно ли у них больше дней, чем предполагалось, а затем сообщите им, что срок их действия истек. Это защитит от людей, изменяющих свою дату перед установкой на будущий день.
  • Я бы порекомендовал произвести деинсталляцию, убрать счетчик «текущих дней». Это связано с тем, что люди могут переоценить ваш продукт через несколько месяцев и в конечном итоге совершить покупку. Но если они не могут это оценить, они не будут покупать. Ни у одного серьезного пользователя не будет времени на удаление / повторную установку только для того, чтобы получить дополнительную пользу от вашего продукта.

Продление испытаний:

Для нас, когда клиент запрашивает расширение пробной версии, мы отправляем ему автоматическое электронное письмо, которое содержит программу "TrialExtend.exe" и код продления пробной версии. Эта программа связывается с нашим сервером с кодом расширения пробной версии для его проверки. Если код подтвержден, их пробный период сбрасывается.

«Ни у одного серьезного пользователя не будет времени на удаление / повторную установку только для того, чтобы получить дополнительную пользу от вашего продукта». Я, конечно, сделаю это.

wingerse 18.05.2016 01:46

Брайан ответил замечательно, но я хотел бы кое-что добавить.

Пользователи Linux обычно не привыкли платить за программное обеспечение, они, как правило, более технически подкованы и, возможно, даже «религиозны» в вопросах открытого исходного кода.

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

Я бы посоветовал, чтобы он не умирал полностью, а после пробного периода отключает определенные функции (например, сохранение). Просто наблюдение, но ограничения на основе функций кажутся более распространенными в мире Linux.

Кроме того, поможет сделать версию для Linux «первоклассной» версией - приличный установщик и т. д.

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

Возможно, настоящая проблема - это ограниченное по времени испытание. Компания, в которой я работаю, выполняет много работы с Active Directory, и мы обычно ограничиваем наше программное обеспечение небольшим количеством пользователей пробными версиями. Мне кажется, что ограничение функциональности в некотором роде иногда лучше, проще в реализации и не дает сбоев, когда пользователь просто меняет дату на своем компьютере. Существует балансирующее действие: вы не можете слишком строго ограничивать функциональность, иначе пользователи ничего не получат от пробной версии. В то же время слишком свободный лимит не дает стимула к покупке.

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