Я разрабатываю условно-бесплатное приложение для настольных ПК. Я подошел к тому моменту, когда мне нужно внедрить код пробного использования / активации. Как вы подходите к этому? У меня есть свои идеи, но я хочу узнать, что думает сообщество stackoverflow.
Я разрабатываю на C++ / Qt. Предполагаемая платформа - Windows / Mac / Linux.
Спасибо за ваш совет!
Спасибо за совет. У нас есть коммерческая лицензия. Не хотелось бы троллей расстраивать ...
Приятно слышать :) Trolltech так много дал сообществу, что я чувствую необходимость защищать их, даже если это, вероятно, не требуется ... Рад видеть, что вы их поддерживаете.





Что бы вы ни делали, внимательно следите за системной датой. Самый старый трюк в книге - установить приложение в какой-то момент в будущем, а затем вернуться к реальной дате после того, как приложение сохранит глупую дату при первом запуске. Может быть, синхронизировать ключ с онлайн-хранилищем?
Чтобы этого не произошло, можно использовать абсолютное значение System.currentTimeMillis () - expirationDate.getTimeMillis (); Извините, я java парень. С уважением, Штефф
Если у вас [довольно] вероятно, что у вас будет сетевое соединение, вы можете зарегистрировать установщик на своем веб-сайте, а затем проверять его каждый раз при запуске.
Если это невозможно, запись значения в точку файловой системы, которая может быть изменена во всем мире (запись реестра, запись в файле / etc conf и т. д.), Может оказаться приемлемой.
Будьте осторожны с этим. Пользователи очень настороженно относятся к программам, которые «звонят домой» - у них нет возможности узнать, что они отправляют в ответ, это могут быть номера их кредитных карт и банковские пароли, все, что они знают.
От чего и чего не защищать:
Имейте в виду, что люди всегда найдут способ обойти пробный период. Итак, вы хотите, чтобы человеку было неприятно обходить ваш пробный период, но это не имеет значения, если вам невозможно обойти пробный период.
Большинство людей подумают, что пытаться обойти пробный период - это слишком много работы, если существует хотя бы простой механизм. Например, люди всегда могут использовать filemon / regmon, чтобы увидеть, какие файлы и записи реестра меняются при установке вашего программного обеспечения.
При этом лучше всего использовать простой механизм, потому что он тратит меньше времени.
Вот несколько идей:
Продление испытаний:
Для нас, когда клиент запрашивает расширение пробной версии, мы отправляем ему автоматическое электронное письмо, которое содержит программу "TrialExtend.exe" и код продления пробной версии. Эта программа связывается с нашим сервером с кодом расширения пробной версии для его проверки. Если код подтвержден, их пробный период сбрасывается.
«Ни у одного серьезного пользователя не будет времени на удаление / повторную установку только для того, чтобы получить дополнительную пользу от вашего продукта». Я, конечно, сделаю это.
Брайан ответил замечательно, но я хотел бы кое-что добавить.
Пользователи Linux обычно не привыкли платить за программное обеспечение, они, как правило, более технически подкованы и, возможно, даже «религиозны» в вопросах открытого исходного кода.
По этой причине я бы действительно рекомендовал не усложнять задачу - на самом деле это всего лишь небольшой барьер, который делает покупку программного обеспечения столь же простой, как его кражу.
Я бы посоветовал, чтобы он не умирал полностью, а после пробного периода отключает определенные функции (например, сохранение). Просто наблюдение, но ограничения на основе функций кажутся более распространенными в мире Linux.
Кроме того, поможет сделать версию для Linux «первоклассной» версией - приличный установщик и т. д.
Если вы относительно невелики или ваша программа занимает относительно нишу, вероятность того, что кто-то потрудится взломать ее, очень мала, поэтому просто сконцентрируйтесь на создании хорошего продукта, не торопясь, когда время истечет.
Возможно, настоящая проблема - это ограниченное по времени испытание. Компания, в которой я работаю, выполняет много работы с Active Directory, и мы обычно ограничиваем наше программное обеспечение небольшим количеством пользователей пробными версиями. Мне кажется, что ограничение функциональности в некотором роде иногда лучше, проще в реализации и не дает сбоев, когда пользователь просто меняет дату на своем компьютере. Существует балансирующее действие: вы не можете слишком строго ограничивать функциональность, иначе пользователи ничего не получат от пробной версии. В то же время слишком свободный лимит не дает стимула к покупке.
Не связано, но имейте в виду, что если вы разрабатываете коммерческие приложения с использованием QT, у вас должен есть лицензия разработчика QT. Лицензия QT запрещает использование редакции с открытым исходным кодом для коммерческого программного обеспечения, которое включает условно-бесплатное ПО. Подробнее см. trolltech.com/products/appdev/licensing/licensing.