Автоматическое обновление.СЕТЕВЫЕ приложения [дублировать]

StackOverflow https://stackoverflow.com/questions/819647

  •  03-07-2019
  •  | 
  •  

Вопрос

На этот вопрос уже есть ответ здесь:

Мы находимся в процессе разработки действительно сложной системы, состоящей из нескольких служб WCF, ASP.NET Приложений MVC, инструментов администрирования (приложений Windows Forms)...Некоторые из них будут иметь экземпляры, работающие на нескольких серверах.Мы ищем хорошее решение для автоматического обновления такой системы.Скорее всего, нам понадобится отдельное приложение (сервис) автоматического обновления, которое выполнит эту работу, или какое-нибудь централизованное приложение администратора, которое будет знать о версиях всех установленных экземпляров и выполнять обновление удаленно.Есть ли какой-нибудь хороший продукт / библиотека, созданные для этой цели, о которых вы знаете или с которыми имели опыт работы?

Это было полезно?

Решение

Лично я использую очень простую методологию для любого вида автоматического обновления:

  • Есть установщик
  • Проверьте новую версию (простой WebClient и сравните цифры с вашей текущей версией assembly).
  • Если версия выше, загрузите последнюю версию установщика (по соображениям безопасности должна быть через SSL).
  • Запустите загруженный установщик и закройте приложение.(на этом этапе вам необходимо иметь права администратора, если ваш установщик требует, чтобы вы были администратором)

Установщик должен позаботиться обо всем остальном.Таким образом, у вас всегда будет последняя версия и установщик с последней версией.

Другие советы

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

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

Мы также предлагаем бесплатные лицензии на wyBuild для проектов с открытым исходным кодом, но если вы просто хотите создать свой собственный апдейтер, вы можете свободно использовать наш исходный код.

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

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

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

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

У нас также есть спецификации файла здесь.

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

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

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

Это позволяет отделить программу обновления от вашего приложения.

Фактически, точный код именованных каналов C #, который мы используем, включен в статью, которую я написал некоторое время назад: Многопроцессорное приложение на C #, подобное Google Chrome.

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

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

Автоматическое обновление служб WCF и ASP.NET веб-сайты также должны иметь возможность работать с этим, используя "горячую замену" файлов и задачу "iisreset", где это необходимо.

Нажмите Once для ваших инструментов администрирования.

Мы исследовали несколько вариантов и решили использовать Обновление AppLife библиотека для нашего предпринимательского проекта.

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

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

Для простых приложений WPF, которые, возможно, используют Xcopy install, вы можете использовать этот модуль обновления приложения.Это один исходный модуль, всего несколько строк кода, для добавления возможности обновления в простое приложение WPF.

Это бесплатно.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top