На Mac есть действительно хорошая библиотека под названием Sparkle, которую могут использовать программы для реализации функции проверки/установки для автоматических обновлений.
Есть ли что-то подобное для .NET? Или просто обычный Win32?
На Mac есть действительно хорошая библиотека под названием Sparkle, которую могут использовать программы для реализации функции проверки/установки для автоматических обновлений.
Есть ли что-то подобное для .NET? Или просто обычный Win32?
ClickOnce имеет свои собственные ограничения безопасности (понятно, так). Если вам нужна полная мощность и управление приложением Windows, перейдите к .NET application updater. Он работает как прелесть и даже используется корпорацией Microsoft внутри своей платформы на основе .NET(я не помню названия игры, хотя).
Позвольте мне сказать, что мы предлагаем полное решение для обновления, которое включает в себя:
wyUpdate обрабатывает все проблемы UAC Vista/Windows 7 и все проблемы с правами на доступ к файлам, которые неизбежно появляются при попытке обновления сложного программного обеспечения.
При этом, если вы хотите создать свой собственный updater, вот несколько советов:
Хорошим местом для начала является исходный код wyUpdate С#, о котором я упоминал выше. Вы можете cannibalize его и использовать его для ваших собственных целей. Некоторые из содержащихся в нем алгоритмов:
У нас также есть параметры файла здесь.
Поскольку автоматическое требование является обязательным, позвольте мне рассказать вам, как мы это делаем с помощью нашего AutomaticUpdater control.
Мы используем именованные каналы для связи между автономным обновлением (wyUpdate) и синтаксисом автоматического обновления, который находится в вашей программе. wyUpdate сообщает о прогрессе в автоматическом обновлении, и Automatic Updater может сообщить wyUpdate об отмене прогресса, начать загрузку, начать извлечение и т.д.
Это предотвращает выделение обновлений от вашего приложения.
На самом деле, точные именованные каналы С#, которые мы используем, включены в статью, которую я написал немного назад: Multi-process С# app как Google Chrome.
ClickOnce - мой предпочтительный метод. Он имеет несколько бородавок, но он поставляется с Visual Studio и работает достаточно хорошо.
ClickOnce сильно используется, но вы можете делать то, что я сделал для большого приложения, и попробовать следующее:
Я немного поработал с логикой и построил то, что я считал лучшим файлом обновления XML. Теперь, когда мне нужно обновлять клиентов, я просто отправляю новые EXE файлы или файлы DLL и устанавливаю правильные версии в общедоступном XML файле. Мое приложение обнаруживает новые версии, если оно старше, и обновляет себя. Если вы делаете это на Windows Vista, вам нужно запросить разрешения администратора, чтобы файлы программы могли быть записаны (если вы установите там).
Вы также можете легко преобразовать это в С#, используя С#/VB.NET Converter.
Я просто прошел процесс выполнения этого и использовал NetSparkle.
Он работал так, как рекламируется для приложения Windows Forms с MSI, который перезаписывает предыдущую версию. Я очень рад, что нашел это тоже - я собирался бросить свой собственный. Я единственный, кто делает действительно простые приложения .NET? В основном все, на что я смотрел, казалось полным перегибом.
Я еще не пробовал NetSparkle (я позже), но, похоже, это то, что вы ищете.
NetSparkle - это простая в использовании среда для обновления программного обеспечения для разработчиков .NET в Windows, Mac или Linux, Он был вдохновлен проектом Sparkle для Cocoa разработчиков и WinSparkle project (a Win32 порт).
Я думаю, WyBuild - хорошая альтернатива Sparkle)
Существует действительно хорошая утилита под названием Updater. Похоже, это написано в C или C++. Я смог настроить файлы XML и загрузить их на рабочий сервер, а затем я могу запустить Updater Run и проверить файл XML для другой версии и загрузить новый пакет установки обновлений, который я создал, используя Nullsoft Scriptable Install System (NSIS).
Мы исследовали несколько вариантов и решили использовать AppLife Update. Обновление AppLife может быстро и легко добавлять функции автоматического обновления для ваших приложений .NET, но также гибко из-за его всеобъемлющего API.
Посмотрите полный список функций и несколько демонстрационных видеороликов на своем веб-сайте.
DotNetAutoUpdate
Я реализовал библиотеку, чтобы сделать это под названием DotNetAutoUpdate (оригинальное имя eh?). Он имеет целью:
Вот решение с открытым исходным кодом, которое я написал для удовлетворения конкретных потребностей, которые у нас были для 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)
Я планирую продлить его больше, когда получаю еще какое-то время, но, честно говоря, вы должны быть в состоянии быстро улучшить его самостоятельно для того, что в настоящее время не поддерживает.
Для обновления клиентских приложений .Net ознакомьтесь с AppLife Update. Он очень гибкий, расширяемый и настраиваемый.
Отказ от ответственности - я связан с обновлением AppLife.