Онлайн обновление программы на C#
Привет,
Извините, если этот вопрос уже задавался. Я пытался использовать функцию поиска, но не смог найти ответ, который бы подходил моей ситуации.
У меня есть настоящее простое приложение формы C# только 1 файл, EXE. Я распространил это в настоящее время 4shared, где люди могут загрузить это как угодно.
Тем не менее, каждый раз, когда я вносю изменения в программу, людям приходится загружать новую версию с 4shared.
Сейчас это не идеальная ситуация, и я нуб, когда дело доходит до создания обновления, но мне хотелось бы, чтобы программа смотрела на веб-сайт / FTP-сервер, на котором я развернул новую версию.
Я ищу способ в своей программе посмотреть файл на этом веб-сайте / FTP-сервере и решить, доступна ли новая версия. Если на веб-сайте / сервере ftp доступна новая версия, я бы хотел, чтобы программа обновилась до самой последней версии.
Надеюсь, вы, ребята, можете помочь мне с этим, и я надеюсь, что я достаточно объяснил свою ситуацию!
5 ответов
NetSparkle - это хорошая альтернатива однократному щелчку с большим количеством вариантов развертывания. http://netsparkle.codeplex.com/
Когда я занимаюсь разработкой и публикацией таких приложений, я обычно делаю это следующим образом:
- Разработать приложение.NET Windows Forms
- Разработайте крошечное приложение ASP.NET с помощью веб-службы ASMX.
- Опубликуйте веб-сервис ASMX на моем общедоступном веб-сайте.
- Добавьте ссылку WSDL для веб-службы в мое приложение Windows Forms.
- Создайте настройку (я предпочитаю 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-сервере или обычном веб-сайте без какой-либо конфигурации на стороне сервера.
Это еще не все, и лучше всего начать с их видеоурока о том, как настроить обновление.