Установщик с онлайн-регистрацией для приложения Windows

Мы разработали программное обеспечение в vb.net с помощью Visual Studio 2013. Теперь мы хотим создать пользовательский установщик со следующими шагами / функциями:

  1. Пользователь Начните устанавливать наше программное обеспечение.
  2. В поле «Введите серийный ключ» пользователь вводит 16-значный серийный номер, который мы предоставили.
  3. При нажатии кнопки «ОК» наше программное обеспечение подключается к нашему IP-адресу и сохраняет Серийный ключ с информацией о других пользователях в нашей базе данных.
  4. Ключ подтверждения возвращается обратно в наше программное обеспечение.
  5. Программное обеспечение записывает файл и сохраняет его в системной папке.

Это похоже на процесс регистрации Adobe или Corel. Мы открыты для других техник, которые должны гарантировать, что наше программное обеспечение должно быть установлено только на одной машине. Пожалуйста, обратите внимание, что мы – группа начинающих программистов (не настолько продвинутый уровень), поэтому; если процесс будет разработан, это будет очень полезно для нас.

Я удалю все функции лицензирования из настройки и добавлю их в приложение . Ваша установка все равно может записать лицензию на диск или в реестр , передав ее в msiexec.exe как общедоступное свойство – свойства UPPERCASE (или вы можете «скрыть» вещи немного больше, используя преобразование для применения свойства serial – оно имеет точно такой же эффект, как установка свойства в командной строке). Вы также можете установить свойство LICENSE в диалоговом окне установки, когда оно запускается в интерактивном режиме , но мой любимый подход заключается в том, чтобы добавить ключ лицензии, который не был проверен в реестре в режиме молчаливого развертывания, и вместо этого ввести лицензионный ключ непосредственно в приложении , а не настройки для интерактивного развертывания (приведенное выше описание предназначено для бесшумного развертывания):

msiexec.exe /I "C:\Install.msi" /QN /L*V "C:\msilog.log" LICENSE="123-456-789" 
  • Это позволит легко добавлять лицензию на каждую машину в сценарии корпоративного развертывания . Значение лицензии просто записывается на диск или реестр без проверки. Приложение проверит его (более безопасно, чем dll проверки в настройке).
  • Нет необходимости возиться с любыми сложными диалоговыми windowsми настройки , но вам потребуется диалоговое окно лицензии в вашем приложении, как описано ниже.
  • В качестве разработчика установки вы должны предложить реализовать эту функцию в приложении, а не в настройке, поэтому это не похоже на случай « передачи доллара ». Это все для полной надежности программного обеспечения и надежной защиты – и несколько причин перечислены ниже.
  • Почти все крупные корпорации разворачивают файлы MSI молча , поэтому в любом случае графический интерфейс установки будет игнорироваться. Затем вы просто добавляете риск и тратите ресурсы, если имеете дело с лицензиями в настройке .
  • Один из недостатков : приложение, выполняемое как пользователь, не являющийся администратором после установки, не может записывать в HKLM для совместного использования серийного номера между всеми пользователями на компьютере (может работать установка с повышенными правами). Он должен либо писать в HKCU, либо настроить должен иметь доступ на запись к определенному местоположению HKLM в реестре для приложения для записи. Я предпочитаю писать в HKCU для каждого пользователя, так как лицензия тогда менее доступна для копирования другими, и она хранится как пользовательские данные (позволяет роуминг, хотя это ненавистная функция у большинства ИТ-специалистов). Тем не менее, лицензионный ключ HKLM, написанный приложением или установка во время установки (как описано выше с набором общедоступных свойств), позволяет всем пользователям совместно использовать лицензию при запуске приложения.

Есть еще несколько конкретных причин, чтобы сохранить обработку и проверку лицензии из вашей установки:

  • Значительное количество запросов на поддержку всегда возникает у людей, у которых есть проблемы с регистрацией своих лицензионных ключей в настройке. Настройка запускается один раз, приложение может быть запущено снова, если есть проблемы . Это более важно, чем вы думаете для неопытных пользователей. У вас также есть улучшенные функции для обработки исключений и условий ошибок и любых неожиданных проблем в приложении.
  • Последовательная проверка в настройке предоставляет проверку / dll / метод проверки, который легко взламывается пиратами. Вы не предотвратите пиратство , исключив его из своей установки, но по крайней мере вы усложняете его. Это более безопасно в приложении, если вы немного закрываете вещи (статическая привязка, шифрование, обфускация, включение процесса проверки в Интернете и / или что-либо, что делают специалисты по безопасности, которых я не знаком).
  • Разрешить пробную версию приложения : если настройка должна поддерживать пробную версию приложения , вы должны разрешить пользователю вводить лицензионный ключ, если они в конечном итоге покупают продукт – желательно без повторного запуска установки или удаления / переустановки для добавления лицензионного ключа. Другими словами, в любом случае вам, вероятно, придется заниматься лицензированием в своем приложении , почему тоже сложно усложнить настройку? Более высокий риск, больше QA, больше потенциальных запросов на поддержку и потенциал для нескольких исправлений в настройках и приложениях. Высокая общая стоимость?
  • Если ваше приложение работает с разными выпусками , что делать , если пользователь покупает обновленную лицензию ? Они должны просто иметь возможность вводить его в диалоговом окне лицензии и разблокировать функции, если это возможно, а не удалять и переустанавливать все связанные с ними кланы. Для некоторых обновлений это сложно достичь, и вы часто получаете отдельные настройки для разных выпусков.
  • Если сеть использует прокси-сервер для доступа в Интернет , у вас возникнут проблемы с регистрацией лицензии через Интернет во время настройки (часто ее спрашивают по маркетингу). У вас есть больше возможностей для проверки и устранения этого в приложении – он может попробовать снова и дождаться доступа (как правило, вы подключаетесь к IE для автоматической настройки прокси-сервера, если это возможно). Для корпоративного развертывания вам понадобится также опция автоматической установки, которая не проверяет ключ, а просто записывает его в реестр. Попытка доступа к Интернету из-за молчаливой установки MSI, на мой взгляд, представляет собой довольно экстремальное развертывание анти-шаблона . Я нахожу это сомнительным и в графическом интерфейсе установки. Выполните регистрацию в приложении – гораздо менее спорным, и вы можете настроить правила брандмауэра, чтобы разрешить ему доступ к сети Интернет (msiexec.exe, скорее всего, блокируется – и по уважительной причине). Также могут быть аппаратные брандмауэры и / или программное обеспечение для обеспечения безопасности, которые затрудняют или даже невозможность доступа к Интернету без какой-либо неуклюжей конфигурации сервера администратора. Это может убить ваше программное обеспечение из соображений моего опыта : « Просто получите это от нашей сети и области применения – должны быть лучшие варианты – слишком неуклюжие и подверженные ошибкам ».
    • ОБНОВЛЕНИЕ : Поскольку технология развертывания созревает и становится более «интернет-основанной», эта «правда» может измениться, и мы могли бы сделать все «онлайн» с развертыванием, разработанным специально для запуска через онлайн-хранилища, например. Нам придется подождать и посмотреть. На данный момент я считаю, что любые требования к настройке доступа к Интернету являются ошибочными и нежелательными.
  • Установки, которые могут быть связаны с лицензированием, иногда могут приводить к удалению данных лицензии во время обновлений , исправлений и сценариев миграции из-за ошибок в настройке. Это гораздо более серьезное время от времени, чем вы думаете – пакет может поражать тысячи рабочих мест в крупных компаниях и быть громоздким для исправления.
    • В самой технологии MSI существует довольно « анти-шаблон », при котором самообслуживание или ручной запуск восстанавливают значения в реестре, которые были изменены приложением. Это может уничтожить лицензионные ключи. Мы постоянно это видим, и это вина технологии. Это просто нелогично в этой области.
    • Для этого есть некоторые исправления – или, скорее, обходные пути (используйте постоянный компонент, пишите лицензию из пользовательского действия, а не из компонента и т. Д.), Но я нахожу их довольно неуклюжими, и у вас должен быть большой опыт знать все подводные камни – и даже опытные пользователи испортили это.
  • Лицензирование – это огромная корпоративная головная боль – часто то, что требуется корпорацией или корпорацией, заключается в том, что лицензирование централизованно управляется на сервере и не основано на текстовых серийных номерах вообще (например, параллельные или плавающие лицензии, полученные при запуске приложения через сеть) , Просто упомянем об этом, хотя это вопрос, который не подходит для вопроса. В этих случаях то, что вы указываете во время установки, обычно является IP-адресом, указывающим на сервер лицензий, или просто обычным именем хоста, которое должно быть разрешено WINS или DNS .

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

  1. LogicNP
  2. DESAWARE

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

Прежде всего, вам понадобится пользовательский интерфейс, в котором пользователь может ввести ключ лицензии / активации. Есть способы включить пользовательский интерфейс в установщик Windows, я уже объяснил несколько подходов в SO, обратитесь к следующим темам.

  • Показывать пользовательскую форму во время установки
  • Как добавить дополнительное пользовательское окно в проекты настройки VS

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

Возможно, вы можете попробовать Inno Setup, которая является бесплатной (даже с открытым исходным кодом) системой установки.

Это основанный на сценарии, который позволяет настраивать ваш установщик и выполнять в нем все!

Создание пользовательской страницы с вводом серийного номера очень просто, см. Этот пример: CustomPage для серийного номера в Inno Setup

и есть также интеграция для Visual Studio.

Давайте будем гением компьютера.