Есть ли стандартный способ для приложений .NET Winforms для автоматического обновления? - PullRequest
9 голосов
/ 16 ноября 2009

Если у вас есть приложение Winforms, которое установлено на большом количестве компьютеров, существует ли стандартный способ реализации функции автоматического обновления?

например. Каждый раз, когда он запускается, он проверяет веб-сайт или веб-службу и, если доступна новая версия, загружает и устанавливает ее?

Я мог бы выяснить, как накатить свою собственную версию этого, но мне интересно, есть ли уже какие-либо фреймворки, чтобы помочь с этим.

Ответы [ 5 ]

9 голосов
/ 16 ноября 2009

+ 1 в ответе ClickOnce, но я также хотел сделать несколько комментариев по этому поводу:

Обычно, когда кто-то впервые начинает смотреть на ClickOnce, он обнаруживает, что он добавляет ряд новых ограничений к вещам, которые разрешено делать его приложению. Они почти всегда нарушают хотя бы один из них и возвращаются, заявляя, что ClickOnce не работает для них, потому что x, y и z больше не будут работать.

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

Ключевым моментом здесь является рассмотрение основного варианта использования приложений ClickOnce. Этот вариант использования в основном относится к корпоративным рабочим станциям, где вы хотите развернуть настоящее линейное бизнес-приложение winforms, которое всегда должно быть актуальным, но ни при каких обстоятельствах пользователи не должны иметь доступа администратора к своей машине. Поскольку вы говорите о «приложении, которое установлено на большом количестве компьютеров», я думаю, что вы, вероятно, относитесь к этой категории.

Глядя на этот вариант использования, последний пункт, особенно, убийца. В конце концов, большинство небольших ограничений для приложений ClickOnce - это то, что требует одного из следующих действий:

  1. Доступ администратора во время выполнения, даже на короткое время
  2. Доступ администратора во время обновления

Иногда не очевидно, что вам нужен этот доступ или зачем он нужен, но, в конце концов, это обычно то, к чему это приводит. Хотите зарегистрировать dll в системе или обновить файл в папке Program Files? Это требует доступа администратора по умолчанию. Нужно установить или обновить службу Windows? Доступ администратора. Хотите запустить установщик MSI для стороннего компонента? Вам нужны права администратора для запуска MSI. Хотите прослушивать порт TCP? Вы поняли идею.

В конце концов, ваша цель - сделать так, чтобы даже пользователи с только стандартными привилегиями могли обновлять ваше приложение автоматически ... даже прозрачно. В противном случае вам понадобится дополнительный ИТ-персонал с каждым развертыванием. Это хорошая идея, даже если ваша программа предназначена для широкой публики; это поможет вам избежать определенного класса проблем с поддержкой. Переход на альтернативную систему развертывания не изменит этого. Эти системы, как правило, нацелены на потребительские машины, где большинство пользователей в любом случае работают от имени администратора, и поэтому они менее осведомлены о проблемах.

7 голосов
/ 16 ноября 2009

Возможно, вы захотите попробовать ClickOnce, я думаю, что это возможно.

2 голосов
/ 16 ноября 2009
1 голос
/ 06 октября 2010

Я в конечном итоге использовал Open Source 'Conversive Sharp AutoUpdater' на

http://csautoupdater.sourceforge.net/

Sharp AutoUpdater - это компонент C #, который автоматически обновляет ваше приложение .NET. Используя файлы конфигурации XML, компонент AutoUpdater определяет наличие новой версии программного обеспечения, загружает, распаковывает и устанавливает новые файлы.

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

1 голос
/ 16 ноября 2009

Обновление AppLife стоит каждого цента, которое стоит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...