Обновление приложений осуществляется через технологию ClickOnce. Это простой и удобный механизм публикации приложений, позволяющий обойтись без написания инсталляторов приложений и предоставляющий «из коробки» средства обновления программ. Данная технология является частью .NET Framework, поэтому, для того чтобы задействовать ее для программ, написанных на native-коде (C++…), необходимо написание оболочки на .NET.

Использование ClickOnce совместно с сервисом позволяет дополнить CLickOnce следующим функционалом:

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

Базовые функции сервиса:
1.    Аутентификация и авторизация пользователей. Разграничение правд доступа пользователей в зависимости от их принадлежности к группам и проектам
2.    Управление публикуемыми приложениями. 
2.1.    Управление опциями приложений (Возможность прописать в ключе лицензии доступные опции приложения).
3.    Управление лицензиями.
3.1.    Выдача лицензий.
3.1.1.    При выдаче лицензии генерируется уникальный ключ лицензии и ссылка для скачивания программы.
3.1.2.    По данной ссылке пользователь может скачать последнюю доступную версию программы в течение срока действия лицензии.
3.1.3.    После окончания срока действия лицензии, в зависимости от настроек приложения:
3.1.3.1.    Скачать программу по ссылке нельзя
3.1.3.2.    Доступная последняя версия программы, имевшаяся на момент окончания срока действия лицензии
3.2.    Отзыв лицензии.
3.3.    Замена лицензии на новую, с другими опциями.
3.4.    Продление лицензии
4.    Публикация приложений. Сканируется указанный в настройках приложения каталог на предмет обнаружения новой версии программы. В случае, если новая версия обнаружена, измененные файлы загружаются в базу данных, версия публикуется и становится доступной для скачивания.
5.    Проверка лицензии. Проверяется валидность и срок действия ключа приложения.
6.    Регистрация лицензии. В базу записывается информация о ключе и идентификатор оборудования компьютера, на котором он был активирован.
7.    Проверка наличия обновлений программы.

Функции по проверке приложений через сервис, которые могут быть реализованы разработчиком:
1.    Проверка ключа локально. Возможность записи в ключ некой информации (срок действия лицензии, доступные опции и т.п.), которую, зная алгоритм ее встраивания в ключ, можно будет проверить на клиенте. В данном случае, инсталлятор программы может проверить ключ локально. При использовании данной функциональности должна быть создана функция проверки и генерация ключа в соответствии с оговоренным алгоритмом.
2.    Проверка ключа через сервер. Программа обращается к серверу, предоставляя информацию о ключе и получает информацию о нем (действителен или нет, возможна ли регистрация или он уже был использован ранее и т.п.).
3.    Привязка программы к оборудованию. Инсталлятор генерирует некий код, идентифицирующий оборудование (ID процессора, материнской платы и т.п.) и передает его на сервер при регистрации ключа.
4.    Проверка наличия обновлений. На сервер передается ключ программы, сервер предоставляет ссылку на скачивание новой версии программы.