Предложить способ автоматического обновления моей программы на C#
Мне нужно держать программу, которую я написал, в курсе, это будет часто происходить в течение следующего года или около того, это нужно будет делать через Интернет. Где бы вы предложили мне начать, есть ли какие-то общие приемы? Любые предложения приветствуются.
Спасибо
4 ответа
Довольно хорошо не достаточно хорошо:)
NAppUpdate - это библиотека с открытым исходным кодом, которую я написал для решения этой проблемы. Общая идея заключается в том, чтобы иметь наибольшую гибкость при минимальных накладных расходах.
Таким образом, интеграция очень проста, и библиотека делает почти все для вас, включая синхронизацию операций. Он также очень гибок и позволяет вам определять, какие задачи выполнять и на каких условиях - вы устанавливаете правила. И, наконец, немаловажным является поддержка любого источника обновлений (веб, BitTorrent и т. Д.) И любого формата ленты - что бы не реализовано, вы можете просто написать самостоятельно.
Холодные обновления (требующие перезапуска приложения) также поддерживаются и выполняются автоматически, если для задачи не задана "горячая замена".
Все это сводится к одной DLL, размером менее 70 КБ.
Более подробная информация на http://www.code972.com/blog/2010/08/nappupdate-application-auto-update-framework-for-dotnet/
Код находится по адресу http://github.com/synhershko/NAppUpdate (по лицензии Apache 2.0)
Существует этот отличный фреймворк под названием NetSparkle, а также этот DotNetUpdater
Я еще не использовал их, но надеюсь сделать это очень скоро. Вы можете попробовать это.
ClickOnce - это хорошее решение, но если вы хотите иметь полный контроль, вы можете сделать это самостоятельно. Я бы предложил опросить веб-сервис, чтобы узнать, доступны ли более поздние версии, загрузить необходимые файлы в параллельный каталог и использовать средство запуска (или обновить ярлык) для автоматического запуска последней версии.
Это немного сложно, но подходит для ситуаций, когда приложение может работать, и поэтому не может быть перезаписано.