+ 1 в ответе ClickOnce, но я также хотел сделать несколько комментариев по этому поводу:
Обычно, когда кто-то впервые начинает смотреть на ClickOnce, он обнаруживает, что он добавляет ряд новых ограничений к вещам, которые разрешено делать его приложению. Они почти всегда нарушают хотя бы один из них и возвращаются, заявляя, что ClickOnce не работает для них, потому что x, y и z больше не будут работать.
Предвидя, что это снова будет иметь место, я хочу воспользоваться моментом, чтобы объяснить обоснование этих ограничений и почему вы, возможно, захотите поближе взглянуть на функционирование вашего приложения, а не писать свою собственную систему обновления или идти с альтернативой.
Ключевым моментом здесь является рассмотрение основного варианта использования приложений ClickOnce. Этот вариант использования в основном относится к корпоративным рабочим станциям, где вы хотите развернуть настоящее линейное бизнес-приложение winforms, которое всегда должно быть актуальным, но ни при каких обстоятельствах пользователи не должны иметь доступа администратора к своей машине. Поскольку вы говорите о «приложении, которое установлено на большом количестве компьютеров», я думаю, что вы, вероятно, относитесь к этой категории.
Глядя на этот вариант использования, последний пункт, особенно, убийца. В конце концов, большинство небольших ограничений для приложений ClickOnce - это то, что требует одного из следующих действий:
- Доступ администратора во время выполнения, даже на короткое время
- Доступ администратора во время обновления
Иногда не очевидно, что вам нужен этот доступ или зачем он нужен, но, в конце концов, это обычно то, к чему это приводит. Хотите зарегистрировать dll в системе или обновить файл в папке Program Files? Это требует доступа администратора по умолчанию. Нужно установить или обновить службу Windows? Доступ администратора. Хотите запустить установщик MSI для стороннего компонента? Вам нужны права администратора для запуска MSI. Хотите прослушивать порт TCP? Вы поняли идею.
В конце концов, ваша цель - сделать так, чтобы даже пользователи с только стандартными привилегиями могли обновлять ваше приложение автоматически ... даже прозрачно. В противном случае вам понадобится дополнительный ИТ-персонал с каждым развертыванием. Это хорошая идея, даже если ваша программа предназначена для широкой публики; это поможет вам избежать определенного класса проблем с поддержкой. Переход на альтернативную систему развертывания не изменит этого. Эти системы, как правило, нацелены на потребительские машины, где большинство пользователей в любом случае работают от имени администратора, и поэтому они менее осведомлены о проблемах.