Библиотека автоматического обновления for.NET? [закрыто]
На Mac есть очень хорошая библиотека под названием Sparkle, которую программы могут использовать для реализации функции проверки/установки для автоматического обновления.
Есть ли что-нибудь подобное для .NET? или просто обычный Win32?
12 ответов:
ClickOnce имеет свои собственные ограничения безопасности (понятное дело). Если вы хотите получить полную мощность и контроль над приложением Windows, тогда используйте .NET компонент application updater. Он работает как шарм и даже был использован Microsoft внутренне для их игры на основе .NET (я не помню название игры, хотя).
Позвольте мне начать с того, что мы предлагаем полное решение для обновления, которое включает в себя:
- an open source updater, wyUpdate , написанный на C#
- Свободный элемент управления AutomaticUpdater, который можно просто добавить в форму вашего приложения .NET
- wyBuild используется для сборки патчей и управления версиями
WyUpdate обрабатывает все проблемы с UAC Vista/Windows 7 и все проблемы с разрешениями файлов, которые неизбежно появляются, когда вы пытаетесь обновление сложного программного обеспечения.
Как говорится, если вы хотите построить свой собственный апдейтер, вот несколько советов:
Создание собственного обновителя
Хорошим местом для начала является исходный код wyUpdate C# , о котором я упоминал выше. Вы можете уничтожить его и использовать в своих собственных целях. Некоторые из алгоритмов, которые он содержит:
- полная поддержка UAC Windows Vista / Windows 7
- возможность для ограниченных пользователей проверять и затем обновлять, если у них есть полномочия
- Поддержка wonky corporate inernet. (Если вы когда-либо работали с корпорацией, это настоящая проблема).
- быстрое извлечение, исправление и установка файлов.
- Поддержка реестра.
- откат файлов и реестра при ошибке или отмене пользователем
- самообновление (никаких файлов не осталось)
У нас также есть спецификации файлов здесь.
Автоматическое обновление
Поскольку быть автоматическим-это требование, позвольте мне расскажу вам, как мы это делаем с нашимAutomaticUpdater control .
Мы используем именованные каналы для связи между автономным средством обновления (wyUpdate) и элементом управления автоматического обновления, находящимся в форме вашей программы. wyUpdate отчетов о ходе автоматического обновления и автоматического обновления можно сказать wyUpdate, чтобы отменить ход, чтобы начать скачивание, начать извлечение и т. д.
Это позволяет отделить средство обновления от вашего приложения.
На самом деле, точные именованные каналы C# кода мы используем это включено в статью, которую я написал некоторое время назад: Мультипроцессное приложение C#, такое как Google Chrome.
ClickOnce - мой предпочтительный метод. У него есть некоторые бородавки, но он поставляется с Visual Studio и работает достаточно хорошо.
ClickOnce широко используется, но вы можете сделать то, что я сделал для большого приложения, и попробовать следующее:
Я немного повозился с логикой и построил то, что я считал лучшим файлом обновления XML. Теперь, когда мне нужно обновить клиенты, я просто размещаю новые EXE-файлы или DLL-файлы и устанавливаю правильные версии в общедоступном XML-файле. Мое приложение обнаруживает более новые версии, если он старше и обновляет себя. Если вы делаете это на Windows Vista, вам нужно запросить разрешения администратора, чтобы можно было записывать программные файлы (если вы устанавливаете их там).
Вы также можете легко преобразовать его в C# с помощьюC#/VB.NET Converter .
Я просто прошел через этот процесс и использовалNetSparkle .
Он работал так, как было объявлено для приложения Windows Forms с установщиком MSI, который перезаписывает предыдущую версию. Я тоже очень рад, что нашел его, - я собирался свернуть свой собственный. Я единственный, кто делает действительно простые приложения .NET? В основном все, на что я смотрела, казалось мне полным перебором.
Я еще не пробовал NetSparkle (я буду позже), но, похоже, это то, что вы ищете.
NetSparkle это простая в использовании платформа обновления программного обеспечения для разработчиков .NET на Windows, Mac или Linux. Он был вдохновлен проектомSparkle для разработчиковCocoa и проектомWinSparkle (портWin32 ).
Я думаю WyBuild хороший блеск Альтернатива )
Вот решение с открытым исходным кодом, которое я написал для удовлетворения конкретных потребностей, которые мы имели для WinForms и WPF приложений. Общая идея состоит в том, чтобы иметь наибольшую гибкость, с наименьшими накладными расходами.
Итак, интеграция очень проста, и библиотека делает практически все для вас, включая синхронизацию операций. Он также очень гибкий , и позволяет вам определить, какие задачи выполнять и на каких условиях - вы создаете правила (или используете некоторые из них уже есть). И последнее, но не менее важное-это поддержка любого источника обновления (web, 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)
Я планирую расширить его больше, когда у меня будет больше времени, но, честно говоря, вы должны быть в состоянии быстро улучшить его самостоятельно для того, что он в настоящее время не поддерживает.
Есть очень хорошая утилита под названием Updater. Похоже, что он написан на C или C++. Я смог настроить XML-файлы и загрузить их на рабочий сервер, а затем запустить программу обновления, проверить XML-файл на наличие другой версии и загрузить новый пакет установки обновлений, созданный с помощью Nullsoft Scriptable Install System (NSIS).
Мы исследовали несколько вариантов и решили использоватьApplife Update . AppLife Update может быстро и легко добавлять функции автоматического обновления для ваших приложений .NET, но он также гибок из-за своего всеобъемлющего API.
Смотрите полный список функций и некоторые демонстрационные видео на их веб-сайте.
DotNetAutoUpdate
Для этого я реализовал библиотеку под названием DotNetAutoUpdate (оригинальное название, да?). Он стремится быть:
- простой в использовании
- Простая настройка
- Безопасный
Для обновления клиентских приложений .Net, взгляните на AppLife Update. Он очень гибкий, расширяемый и настраиваемый.
Отказ от ответственности-я связан с обновлением AppLife.