Предложения по техническим подходам к лицензированию надстройки CRM4 (ISV) - PullRequest
0 голосов
/ 26 апреля 2010

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

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

Я не очень знаком с понятиями / лучшими практиками / подводными камнями, когда речь заходит о «лицензировании» приложений .net (особенно надстроек CRM4), поэтому спрашиваю, есть ли у вас какие-либо предложения. Мы ищем что-то довольно простое и должно быть достаточно «взломанным», поскольку мы считаем, что ввод лицензионного кода - это, как правило, PITA.

  • Есть ли у CRM API что-нибудь, что может предложить разработчик ISV? (Я вижу, что можно проверить сущность License, но я предполагаю, что это для самой лицензии CRM)
  • Существуют ли какие-либо примеры кода / проекты / структуры, подходящие для использования или реализации?
  • Я испытываю желание создать ключ реестра после установки надстройки, который, если через месяц правильный лицензионный ключ не будет введен, ограничит функциональность. Это лучший способ сделать это? Вы видели другие дополнения, которые делают это по-другому / лучше?
  • С точки зрения ограничения функциональности, я думаю выбросить InvalidPluginExecutionExceptions. Наверняка должен быть более «изящный» способ сделать это?

Все мысли и предложения приветствуются.

С уважением, Питер.

1 Ответ

1 голос
/ 28 апреля 2010

Мои мысли:

  • Да, вы можете запросить объект «Лицензия», чтобы узнать количество лицензированных пользователей, что является распространенным типом лицензии из того, что я видел. Многие сторонние поставщики взимают плату за количество лицензированных пользователей, независимо от того, сколько из этих пользователей фактически использует эту настройку. Я стараюсь держаться подальше от них, потому что стоимость лицензий часто слишком высока для корпоративных развертываний.
  • Не то, что я знаю.
  • Мне нравится эта опция, и я видел, как минимум один сторонний инструмент использовал этот метод. Они позволяют вам объявить лицензионный ключ в вашем файле .config, и если их среда выполнения не находит его там, он проверяет известный ключ реестра. Инструмент поставляется с приложением, которое регистрирует лицензионный ключ в реестре для вас. Я бы тщательно протестировал и убедился, что ваш пользовательский код может читать реестр в среде с наименьшими привилегиями.
  • Определенно не изящно бросать исключения, но это доказывает вашу точку зрения. :) Кроме этого, просто пропустить ваш код - еще одна возможность, хотя это может иметь последствия для данных. Если вы должны выбросить исключения, я бы предложил попытаться запустить некоторый javascript при загрузке формы ваших сущностей, который предупреждает пользователя об истечении срока действия лицензии и сохранении приведет к ошибке. Некоторые более гнусные схемы могут включать в себя Thread.Sleep, что-то вроде старых условно-бесплатных программ. :)

Другая идея - можете ли вы настроить развертывание Enterprise IFD, чтобы предоставить клиентам удаленный доступ к вашей демонстрации, включая их собственную демонстрационную организацию? Это зависит от вашей аудитории, но ваши клиенты могут не иметь роскоши (время, среда разработки) для загрузки и установки пробной версии. Они могут просто захотеть увидеть его в действии - после того, как вы определите условия продажи, возможно, вы предложите бесплатную удаленную установку и не будете тратить так много времени на безупречный пакет установки? Опять же, зависит от вашей аудитории и объема лицензий, которые вы планируете продать. Технически, вы можете динамически подготовить организации с помощью SDK и сделать процесс онлайн-пробной версии полностью автоматическим. Конечно, это большие инвестиции, но они позволяют вам полностью контролировать вашу демонстрацию / IP.

Надеюсь, это поможет!

...