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

Автоматическое обновление библиотеки для .NET?

На Mac есть действительно хорошая библиотека под названием Sparkle, которую могут использовать программы для реализации функции проверки/установки для автоматических обновлений.

Есть ли что-то подобное для .NET? Или просто обычный Win32?

4b9b3361

Ответ 1

ClickOnce имеет свои собственные ограничения безопасности (понятно, так). Если вам нужна полная мощность и управление приложением Windows, перейдите к .NET application updater. Он работает как прелесть и даже используется корпорацией Microsoft внутри своей платформы на основе .NET(я не помню названия игры, хотя).

Ответ 2

Позвольте мне сказать, что мы предлагаем полное решение для обновления, которое включает в себя:

wyUpdate обрабатывает все проблемы UAC Vista/Windows 7 и все проблемы с правами на доступ к файлам, которые неизбежно появляются при попытке обновления сложного программного обеспечения.

При этом, если вы хотите создать свой собственный updater, вот несколько советов:

Создание собственного обновления

Хорошим местом для начала является исходный код wyUpdate С#, о котором я упоминал выше. Вы можете cannibalize его и использовать его для ваших собственных целей. Некоторые из содержащихся в нем алгоритмов:

  • Полная поддержка Windows Vista/Windows 7 UAC
  • Возможность ограниченным пользователям проверять и обновлять, если у них есть учетные данные.
  • Поддержка неустойчивого корпоративного inernet. (Если вы когда-либо работали с корпорацией, это настоящая проблема).
  • Быстрое извлечение, исправление и установка файлов.
  • Поддержка реестра.
  • Откат файлов и реестра при ошибке или аннулировании пользователем
  • Самообновление (без файлов осталось)

У нас также есть параметры файла здесь.

Автоматическое обновление

Поскольку автоматическое требование является обязательным, позвольте мне рассказать вам, как мы это делаем с помощью нашего AutomaticUpdater control.

Мы используем именованные каналы для связи между автономным обновлением (wyUpdate) и синтаксисом автоматического обновления, который находится в вашей программе. wyUpdate сообщает о прогрессе в автоматическом обновлении, и Automatic Updater может сообщить wyUpdate об отмене прогресса, начать загрузку, начать извлечение и т.д.

Это предотвращает выделение обновлений от вашего приложения.

На самом деле, точные именованные каналы С#, которые мы используем, включены в статью, которую я написал немного назад: Multi-process С# app как Google Chrome.

Ответ 3

ClickOnce - мой предпочтительный метод. Он имеет несколько бородавок, но он поставляется с Visual Studio и работает достаточно хорошо.

Ответ 4

ClickOnce сильно используется, но вы можете делать то, что я сделал для большого приложения, и попробовать следующее:

Я немного поработал с логикой и построил то, что я считал лучшим файлом обновления XML. Теперь, когда мне нужно обновлять клиентов, я просто отправляю новые EXE файлы или файлы DLL и устанавливаю правильные версии в общедоступном XML файле. Мое приложение обнаруживает новые версии, если оно старше, и обновляет себя. Если вы делаете это на Windows Vista, вам нужно запросить разрешения администратора, чтобы файлы программы могли быть записаны (если вы установите там).

Вы также можете легко преобразовать это в С#, используя С#/VB.NET Converter.

Ответ 5

Я просто прошел процесс выполнения этого и использовал NetSparkle.

Он работал так, как рекламируется для приложения Windows Forms с MSI, который перезаписывает предыдущую версию. Я очень рад, что нашел это тоже - я собирался бросить свой собственный. Я единственный, кто делает действительно простые приложения .NET? В основном все, на что я смотрел, казалось полным перегибом.

Ответ 6

Я еще не пробовал NetSparkle (я позже), но, похоже, это то, что вы ищете.

NetSparkle - это простая в использовании среда для обновления программного обеспечения для разработчиков .NET в Windows, Mac или Linux, Он был вдохновлен проектом Sparkle для Cocoa разработчиков и WinSparkle project (a Win32 порт).

Ответ 7

Я думаю, WyBuild - хорошая альтернатива Sparkle)

Ответ 8

Существует действительно хорошая утилита под названием Updater. Похоже, это написано в C или C++. Я смог настроить файлы XML и загрузить их на рабочий сервер, а затем я могу запустить Updater Run и проверить файл XML для другой версии и загрузить новый пакет установки обновлений, который я создал, используя Nullsoft Scriptable Install System (NSIS).

Ответ 9

Мы исследовали несколько вариантов и решили использовать AppLife Update. Обновление AppLife может быстро и легко добавлять функции автоматического обновления для ваших приложений .NET, но также гибко из-за его всеобъемлющего API.

Посмотрите полный список функций и несколько демонстрационных видеороликов на своем веб-сайте.

Ответ 10

DotNetAutoUpdate

Я реализовал библиотеку, чтобы сделать это под названием DotNetAutoUpdate (оригинальное имя eh?). Он имеет целью:

  • Простой в использовании
  • Простая настройка
  • Secure

Ответ 11

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

Итак, интеграция очень проста, и библиотека делает для вас почти все, включая операции синхронизации. Он также очень гибкий и позволяет вам определить, какие задачи выполнять и на каких условиях - вы создаете правила (или используете некоторые из них уже есть). И последнее, но не менее важное: поддержка любого источника обновлений (веб, BitTorrent и т.д.) И любого формата фида - все, что не реализовано, вы можете просто написать для себя. p >

Холодные обновления (требующие перезапуска приложения) также поддерживаются и выполняются автоматически, если для задачи не задано "горячая замена".

Это сводится к одной DLL, размер которой меньше 70 КБ.

Подробнее на http://www.code972.com/blog/2010/08/nappupdate-application-auto-update-framework-for-dotnet/

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

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

Ответ 12

Для обновления клиентских приложений .Net ознакомьтесь с AppLife Update. Он очень гибкий, расширяемый и настраиваемый.

Отказ от ответственности - я связан с обновлением AppLife.