Подтвердить что ты не робот

Автоматическое обновление для приложения WinForms

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

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

Код находится в http://github.com/synhershko/NAppUpdate (лицензия под лицензией Apache 2.0)

Ответ 3

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

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

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

Ответ 4

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

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

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

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

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