Автообновление для приложения WinForms - PullRequest
18 голосов
/ 26 сентября 2008

Как при создании функции автоматического обновления для приложения .NET WinForms оно обновляет библиотеки DLL и не влияет на работающее в данный момент приложение?

Поскольку приложение работает во время процесса обновления, не будет ли блокировки DLL (потому что эти DLL придется перезаписывать во время обновления).

Ответы [ 4 ]

17 голосов
/ 26 сентября 2008

Обычно вы загружаете новые файлы в отдельную область. Затем выключите и перезапустите, и при запуске вы ищете и используете новые файлы, если они найдены. Всегда держите последнюю известную рабочую версию на стороне, чтобы пользователь мог вернуться к чему-то, что определенно работает, если загрузка вызывает проблемы.

ClickOnce - хорошая технология от Microsoft, которая делает это для вас, и вы можете использовать ее непосредственно из Visual Studio 2008.

7 голосов
/ 25 августа 2010

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

Я написал код с открытым исходным кодом, чтобы сделать это в прозрачном режиме, включая внешнее приложение обновления для фактического холодного обновления. Смотри http://www.code972.com/blog/2010/08/nappupdate-application-auto-update-framework-for-dotnet/

Код: http://github.com/synhershko/NAppUpdate (по лицензии Apache 2.0)

5 голосов
/ 26 сентября 2008

У меня есть отдельное приложение 'launcher', которое проверяет обновления через веб-сервис. Если есть обновления, он загружает их, а затем выполняет мое приложение, которое находится в отдельной сборке.

Другие альтернативы используют такие вещи, как ClickOnce, или загрузку файлов в отдельную область и перезапуск приложения, как кто-то еще упоминал.

Будьте осторожны с ClickOnce - он не такой гибкий, как кажется. И если вы развертываете систему, для которой требуется запуск вашей программы до более высокого уровня безопасности, вы можете столкнуться с проблемами, если у вас не установлен сертификат для вашего приложения. Мне было очень трудно получить прямые ответы в Интернете на такие вещи, как управление сертификатами, когда дело доходит до ClickOnce. Если у вас сложное приложение, вы можете просто запустить свой собственный модуль обновления, что я и сделал в итоге.

4 голосов
/ 26 сентября 2008

Если вы публикуете через ClickOnce, все это, как правило, обрабатывается для вас. У него есть свои плюсы и минусы, но обычно это проще, чем пытаться все это кодировать самостоятельно.

Обе Википедия и 15 секунд имеют приличную информацию об использовании ClickOnce, его работе и т. Д.

Как уже заявляли другие, ClickOnce не так гибок, как развертывание вашего собственного решения, но гораздо менее сложен. Сначала он имеет небольшую кривую обучения, но почти все, что связано с Visual Studio и использованием Wizards, обычно не занимает много времени, чтобы наткнуться на рабочее решение.

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

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

...