Приложение, первый запуск : Многие разработчики, как правило, рекомендуют включать лицензирование в само приложение - при первом запуске. Есть много причин, и вот попытка объяснения: Установщик с онлайн-регистрацией для приложения Windows .
Настраиваемые действия : Настраиваемые действия используются для выполнения необычных или запатентованных действий в установках MSI. Пользовательские действия легендарны тем, что их очень трудно получить правильно и надежно из-за общей сложности MSI и сложности развертывания в целом (раздел "The Complexity of Deployment"
) , По существу пользовательские действия являются сложными с sequencing-
, conditioning-
и impersonation issues
и в целом poor debugability
.
Итог : Когда вы реализуете логику в коде запуска своего приложения, вы находитесь на знакомой территории, не испытывая трудностей с имитацией или отладкой. Намного легче развиваться. Гораздо проще отлаживать и поддерживать.
Лицензирование для каждого пользователя : проблема заключается в том, что ваше приложение должно выполнять запись в HKCU или в профиль пользователя - если только оно не запущено с повышенными правами администратора. Я предпочитаю, чтобы лицензирование выполнялось для каждого пользователя, потенциально позволяя лицензии перемещаться вместе с пользователем. Или использовать подход онлайн-лицензирования с лицензированием, установленным один раз по беспроводной сети. Например, путем входа в приложение. Вы входите в онлайн-сервис, и все лицензии являются частью этого.
P.S .: Можно применить изменения ACL к HKLM, позволяя приложению без повышенных прав записать лицензионный ключ в HKLM. Возможно, не рекомендация.