Онлайн обновление программы на C # - PullRequest
5 голосов
/ 26 марта 2011

Привет,

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

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

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

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

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

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

Ответы [ 5 ]

5 голосов
/ 26 марта 2011

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

3 голосов
/ 26 марта 2011

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

1 голос
/ 26 марта 2011

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

  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 получает не-NULL строку, она может показать пользователю сообщение, спрашивающее, хочет ли он загрузить и установить исполняемый файл, а затем просто выполнить URL(через Process.Start).

0 голосов
/ 04 мая 2011

Вот библиотека с открытым исходным кодом, которую я написал для удовлетворения конкретных потребностей, которые мы имели для приложений 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)

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

0 голосов
/ 26 марта 2011

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

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

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

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

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

...