Онлайн обновление программы на C#

Привет,

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

У меня есть настоящее простое приложение формы C# только 1 файл, EXE. Я распространил это в настоящее время 4shared, где люди могут загрузить это как угодно.

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

Сейчас это не идеальная ситуация, и я нуб, когда дело доходит до создания обновления, но мне хотелось бы, чтобы программа смотрела на веб-сайт / FTP-сервер, на котором я развернул новую версию.

Я ищу способ в своей программе посмотреть файл на этом веб-сайте / FTP-сервере и решить, доступна ли новая версия. Если на веб-сайте / сервере ftp доступна новая версия, я бы хотел, чтобы программа обновилась до самой последней версии.

Надеюсь, вы, ребята, можете помочь мне с этим, и я надеюсь, что я достаточно объяснил свою ситуацию!

5 ответов

Решение

Посмотрите на ClickOnce. Это сделает это для вас.

NetSparkle - это хорошая альтернатива однократному щелчку с большим количеством вариантов развертывания. http://netsparkle.codeplex.com/

Когда я занимаюсь разработкой и публикацией таких приложений, я обычно делаю это следующим образом:

  1. Разработать приложение.NET Windows Forms
  2. Разработайте крошечное приложение ASP.NET с помощью веб-службы ASMX.
  3. Опубликуйте веб-сервис ASMX на моем общедоступном веб-сайте.
  4. Добавьте ссылку WSDL для веб-службы в мое приложение Windows Forms.
  5. Создайте настройку (я предпочитаю Unicode NSIS, а не ClickOnce).

Логика, которую я реализую в веб-сервисе SOAP, представляет собой единственную функцию:

[WebMethod]
public string CheckUpdateAvailable( string currentVersion )
{
    ...
}

Приложение Windows Forms вызывает этот метод (например, из фонового потока при запуске программы), передавая свою текущую версию сборки в виде строки функции.

Функция WSDL, в свою очередь, проверяет переданную версию на соответствие самой новой версии установки (например, хранящейся внутри web.config или извлеченный в прямом эфире из setup.exe на сервере). Если существует более новая версия, она возвращает строку с URL-адресом для загрузки; в противном случае возвращается NULL.

Когда вызывающая функция WSDL получает ненулевую строку, она может показать пользователю сообщение, спрашивающее, хочет ли он загрузить и установить исполняемый файл, а затем просто выполнить URL (через Process.Start).

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

Таким образом, интеграция очень проста, и библиотека делает почти все для вас, включая синхронизацию операций. Он также очень гибок и позволяет вам определять, какие задачи выполнять и при каких условиях - вы устанавливаете правила (или используете уже существующие). И, наконец, немаловажным является поддержка любого источника обновлений (веб, 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)

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

WyUpdate это путь сюда. Мы использовали его более года с отличными результатами (у них тоже отличная поддержка).

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

Они предоставляют компонент автоматического обновления для Windows Forms или WPF, который выглядит красиво и прекрасно работает.

Вы можете разместить файлы обновлений на FTP-сервере или обычном веб-сайте без какой-либо конфигурации на стороне сервера.

Это еще не все, и лучше всего начать с их видеоурока о том, как настроить обновление.

Другие вопросы по тегам