Внедрение 30-дневной временной пробной версии

Вопрос к инди-разработчикам Mac:

Как мне провести 30-дневную гонку на время без зла? Включение счетчика в prefs - не вариант, поскольку очистка prefs один раз в месяц не является проблемой для обычного пользователя. Размещение счетчика где-нибудь в скрытом файле звучит немного странно - как пользователь я ненавижу, когда приложения забивают мой жесткий диск случайными файлами. Любые идеи?


person svintus    schedule 07.01.2010    source источник
comment
Одно предложение: вместо того, чтобы делать 30 дней с даты X, как насчет того, чтобы сделать это X часов непрерывного использования? В отличие от 30-дневной пробной версии, пробная версия X-часов реального использования, вероятно, даст мне время применить приложение к реальной задаче через 31 день после того, как я в первый раз взгляну на ваш пользовательский интерфейс поверхностно. Это на самом деле не отвечает на ваш вопрос (где разместить информацию о пробной версии), только немного изменяет его (что туда помещать: количество использованных минут по сравнению с датой первого запуска).   -  person Peter Hosey    schedule 07.01.2010
comment
Рассмотрите возможность развертывания через Steam. Они управляют всем необходимым DRM.   -  person Thorbjørn Ravn Andersen    schedule 24.07.2013
comment
При разработке программного обеспечения я использовал версию файла конфигурации и процесс хранения ключей реестра. Но оба они ломаются, если пользователь форматирует машину и переустанавливает ее. 30-дневную пробную версию можно снова использовать даже по истечении срока после форматирования машины. Но в случае программного обеспечения Microsoft их нельзя установить даже после форматирования. Что это может быть за логика?   -  person Nisha    schedule 11.03.2014
comment
Есть отличная статья Аллана Одгаарда о том, как создать лицензионный ключ для приложения с использованием OpenSSL. Вы можете указать дату истечения срока действия своего лицензионного ключа и всегда требовать действующую лицензию, но раздавайте 30-дневные лицензии на своем веб-сайте. Если пользователь постоянно запрашивает пробные лицензии, вы, по крайней мере, сможете их подсчитать и в конечном итоге отказаться от них. sigpipe.macromates.com/2004/09/05 /   -  person uliwitness    schedule 20.08.2014


Ответы (9)


Эта проблема неоднократно возникает в списке рассылки cocoa-dev, и согласованный ответ всегда заключается в том, чтобы делать самое простое из возможных. Решительные хакеры взломают все, кроме самых изощренных решений. И в любом случае они вряд ли будут платить за программное обеспечение. Выбирайте решение 80/20: простое решение, которое дает 80% -ный эффект при 20% -ых усилиях. В этом случае поместите что-нибудь в ~ / Library / Application Support / your.app.com /. Вы можете назвать файл как-нибудь невиновным, если хотите немного запутать ситуацию. Также легко использовать пользовательские настройки по умолчанию.

Что бы вы ни делали, не используйте MAC-адрес или другой идентификатор оборудования. Пользователи с домашним каталогом в сети (например, в общей лаборатории) будут вас ненавидеть. Использование идентификаторов оборудования - это просто зло.

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

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

person Barry Wark    schedule 07.01.2010
comment
Не могли бы вы объяснить, почему использование хешированного идентификатора оборудования - зло? - person superarts.org; 26.08.2016

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

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

Дополнительно реализуйте эти вещи в файле конфигурации.

  1. Записывайте время / дату каждый раз, когда пользователь запускает приложение.
  2. Обратите внимание на время, в течение которого приложение было открыто.

Регистрируя временную метку, вы можете избежать этих обходных путей:

  1. Если пользователь изменит дату на компьютере, вы узнаете, что приложение уже было запущено в этот день. Скажем, пользователь запускал приложение 1 и 3 числа месяца. Теперь, через 30 дней, меняет дату на 2-е число месяца. Теперь по файлу конфигурации вы узнаете, что приложение уже запущено на 1 и 3, поэтому пользователь испортил даты на компьютере.
  2. Предположим, каждый раз, когда пользователь запускает ваше приложение, сначала устанавливается дата 5 числа месяца. Регистрируя время работы вашего приложения, вы увидите, что если общее количество часов в день превышает 24, то пользователь дурачит.

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

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

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

person K Singh    schedule 07.01.2010

Учти это. Сколько потенциальных пользователей вашего программного обеспечения им просто не терпится использовать его в течение следующих 30 дней?

Я подозреваю, что гораздо более нормальный случай: пользователи сталкиваются с новым программным пакетом, который решает проблему, возникшую на таком сайте, как lifehacker.com. программное обеспечение загружается, ненадолго поиграется, а затем откладывается. Возможно, это программа для копирования mp3, и в то время у них нет компакт-дисков для копирования. Или они просто заняты в тот день, но они «скоро» приступят к проверке этого программного обеспечения.

Проходит 30 дней. Наверное, больше. Только тогда они покупают компакт-диск, сталкиваются с какой-то «проблемой» и вспоминают: «Ага, это та пробная версия, которую я скачал! Куда я его снова положил? Это не имеет значения. Поскольку «испытание» никогда не использовалось, истекло время ожидания.

Я не могу сосчитать, сколько программных инструментов попало из-за меня в это ведро. День, когда мне порекомендуют программное обеспечение, день, когда я увижу положительный отзыв о лайфхакере, НИКОГДА не будет тем днем, когда у меня действительно возникнет потребность - или даже время - использовать / анализировать программу, которую я скачал и установил.

person Chris Becke    schedule 07.01.2010
comment
Ммм, очень хорошее замечание, спасибо. Теперь это зависит от типа приложения и, конечно же, от того, что оно делает. Я обязательно рассмотрю это. - person svintus; 08.01.2010

Срок действия программного обеспечения истекает через 30 календарных дней - это плохо, потому что что, если кто-то загрузит его, запустит один раз, а затем решит, что оценит его через месяц? В следующий раз, когда они запустят его, через месяц, он скажет, что срок его действия истек.

Я бы предпочел ограничить его 14 запусками или около 120 минут использования.

Что касается реализации, файл (скрытый или нет) в папке настроек пользователя с обфусцированным именем кажется лучшим выходом. Файл не размещается на жестком диске случайным образом, но пользователь не может легко определить, какой файл удалить.

person lucius    schedule 08.01.2010

Наименее злой способ - просто попросить пользователя удалить программу через месяц или заплатить за нее;)

person Andreas Brinck    schedule 07.01.2010
comment
К сожалению, пользователи окажутся злыми, если не будут этого придерживаться. - person ; 07.01.2010

Мы сделали это для одного из наших клиентских приложений. Конечно, это было сделано в .NET для Windows, но те же принципы можно применить и в MAC.

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

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

Если пользователь замечает, что этот файл содержит информацию, и удаляет его (или изменяет его с помощью имеющейся у него копии), тогда вам нужен способ противодействовать этому. Вы можете указать другое значение в другом файле конфигурации (всегда зашифрованном) и проверить его согласованность. Что вы будете делать, если обнаружите, что пользователь пытается обмануть, зависит от вас, но мы заставляем пользователя подключиться к Интернету, чтобы это работало.

Это может быть излишним для программы, но определенно работает.

person David Brunelle    schedule 07.01.2010
comment
Почему голос против? Если в моей безопасности есть изъян, я хотел бы знать, что это такое, поскольку мы реализуем его в одном из наших приложений. - person David Brunelle; 07.01.2010
comment
Одна из возможных проблем заключается в том, что изменить MAC-адрес тривиально, поэтому, если вы используете MAC-адрес в качестве своего уникального идентификатора, вашу защиту легко обойти. (Кстати, я не тот, кто проголосовал против вашего ответа) - person Chinmay Kanchi; 07.01.2010
comment
Забыл упомянуть, что мы также используем другой идентификатор из компьютерного оборудования, но я не знал, что можно изменить MAC-адрес. - person David Brunelle; 07.01.2010
comment
Да, это просто ключ реестра, который вы меняете. При перезагрузке устройства (или Windows, которую я забыл) новый MAC-адрес подделывается, и устройство использует новый адрес, пока присутствует ключ reg. Также я ставлю +1 вам, мне нравится ваш подход, он идет вразрез со всем, что они все равно взломают, если захотят, так что не беспокойте толпу. - person Anonymous Type; 22.12.2010
comment
Возможно, самая большая проблема заключается в том, что если Интернет не работает, ваш сервер не работает или по какой-либо причине установка приложения не может быть аутентифицирована? С этого момента все усложняется. - person Jason Fuerstenberg; 19.04.2012
comment
Мы внедрили трехдневный «льготный период», если что-то подобное случится. Некоторая второстепенная конфигурация сохраняется на компьютере в зашифрованном файле, поэтому он работает так, как будто находится в сети. После этого пользователю нужно было подключиться к Интернету. - person David Brunelle; 20.04.2012

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

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

Или вы можете сделать это, как это делает WinZip (или раньше?): Предоставить 30-дневную пробную версию и просто отображать всплывающий экран при каждой загрузке, который показывает, как долго вы его используете, и ссылки для покупки.

person Brad Butner    schedule 07.01.2010

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

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

В полной платной версии такой логики не существовало, и файл данных можно было легко импортировать.

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

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

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

person Jason Fuerstenberg    schedule 19.04.2012

Считать UUID какого-либо аппаратного компонента и проверить свою веб-службу, чтобы узнать, было ли ваше программное обеспечение уже установлено в течение 30 дней после запуска программы?

person Fredrik E    schedule 07.01.2010
comment
Звонить домой еще хуже, чем оставлять там теневые файлы, ИМХО. - person Virgil Dupras; 07.01.2010
comment
Как вы думаете, E.T. тоже было злом? Все равно нужно позвонить домой и получить серийный номер при первом запуске программы, если нет предпочтений. Честно говоря, я не вижу вреда в отправке UUID при этом. Это то, о чем просит OP ... - person Fredrik E; 07.01.2010
comment
Я должен уточнить. Необходимо отправить UUID с вызовом домой, если вы хотите избавить платящего пользователя от хлопот повторного ввода регистрационных данных на компьютере, который уже был авторизован. : D - person Fredrik E; 07.01.2010
comment
Звучит разумно, поскольку приложению в любом случае необходимо подключение к Интернету. Я не считаю это злом - я не буду получать от пользователя никаких данных, кроме его UUID (например, MAC-адреса). - person svintus; 07.01.2010
comment
Некоторые пользователи сочтут это вторжением в свою частную жизнь. Вы можете в конечном итоге потерять больше клиентов, чем получить от этого. Но опять же, это ваш звонок (домой! Хе-хе). И не забывайте о возможности ошибки в вашей реализации этой схемы, не позволяющей возможным клиентам даже попробовать ваше приложение. - person Virgil Dupras; 07.01.2010
comment
Я нигде не вижу, чтобы приложению требовался Интернет для работы, но редко бывают те, у которых нет Интернета. Скорее всего человек все равно его скачал ... - person David Brunelle; 07.01.2010
comment
Вы серьезно думаете, что доступ к MAC-адресу пользователя является вторжением в его конфиденциальность? Как только вы подключаетесь к любой сети, вы фактически отдаете свой MAC. - person svintus; 07.01.2010
comment
@svintus: при обычном использовании вы транслируете свой MAC только в локальную сеть, а не за ее пределы. - person Chris Jester-Young; 07.01.2010
comment
Не имеет большого значения, разумно то, что я считаю, или нет. Может быть, и честная часть ваших потенциальных клиентов будет неразумной. Вам нужны только клиенты, которые придерживаются того же мнения, что и вы, о приложениях, которые звонят домой? Пока не знаю, за мой первый комментарий было 4 положительных голоса. Вероятно, это 4 человека, которые не захотели бы использовать приложение, которое звонит домой. 5, если вы учитываете меня. Вы должны посчитать и определить, принесет ли ваша схема вам больше клиентов, чем она заставит вас потерять. - person Virgil Dupras; 07.01.2010
comment
Согласитесь, у людей странные представления о конфиденциальности. - person svintus; 07.01.2010
comment
Использование аппаратного UUID гарантирует, что ваше взаимодействие с пользователем будет отстойным для пользователей в домашнем сетевом каталоге или у которых есть учетные записи мобильного дома, синхронизированные на нескольких компьютерах. - person Barry Wark; 08.01.2010