Автоматическое обновление - PullRequest
6 голосов
/ 20 сентября 2010

У меня есть система с двумя веб-приложениями, одним веб-сервисом, одним сервисом Windows и приложением WPF, работающим 24 часа в сутки на сенсорном экране.Все они подключены к базе данных.

Я хочу иметь возможность обновить все эти приложения, загрузив файлы обновления в базу данных и установив дату и время для обновления.

У меня есть одна идея, как это сделать.

  1. В приложении запущен поток для поиска доступных обновлений.
  2. При обнаружении обновления файл загружается вкомпьютер приложения.
  3. По завершении загрузки приложения запускают перезапуск.
  4. При запуске приложения выполняется поиск файла обновления на локальном компьютере.
  5. Если обновление выполненодоступно, приложение обновляется.

Я не совсем уверен, как все эти шаги должны быть сделаны, особенно последний.Но я хочу несколько комментариев по этому поводу.Это совершенно неправильно?Я на правильном пути?Какие-нибудь советы, как это сделать так или по-другому?

Ответы [ 6 ]

1 голос
/ 22 сентября 2010

У вас будут проблемы с этим с ClickOnce. ClickOnce будет работать только для вашего приложения WPF, он не может ничего сделать со службами или веб-приложением. Вы могли бы написать отдельное приложение «Updater», развернутое с помощью ClickOnce, задачей которого является обновление других приложений, но это все еще кажется немного сомнительным.

Это может звучать глупо, но я бы начал с самой простой вещи, о которой я мог подумать. Как насчет использования Dropbox для отправки файлов обновления; затем скрипт AutoHotKey , который запускается при запуске, просматривает папку Dropbox для новых обновлений и запускает их?

Звучит странно, но это то, что вы можете доказать за час или два.

1 голос
/ 20 сентября 2010

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

Это также может быть выполнено из сценария PowerShell, который выполняется по расписанию, скажем, каждые 10 минут,Он может проверить базу данных, закрыть процесс и службу, скопировать приложение (из общего источника) и перезапустить указанную службу и приложение.

Все это предполагает, что вы не используете установщик Windows для упаковки и развертыванияприложение изначально.Хотя xcopy для прямой замены двоичных файлов не повредит пакету MSI, это не рекомендуется.Мы используем развертывание AD MSI на работе, и в лучшие времена это тяжело!

MSDN содержит ссылки на развертывание MSI против XCopy для приложений WPF (а также требования безопасности).

была первая ссылка, которую я нашел для запроса SQL из PowerShell: http://elegantcode.com/2008/03/27/discovering-windows-powershell/

Удачи!

0 голосов
/ 24 сентября 2010

Как насчет Google Omaha ?Это инструмент с открытым исходным кодом, в настоящее время используемый для продвижения обновлений Google Chrome и Google Earth.Омаха также может справиться с установкой приложения.Общий обзор дизайна можно найти здесь .

0 голосов
/ 23 сентября 2010

Вы можете создать другую службу Windows, которая будет обновлять ежедневно. Служба будет искать определенную папку, если есть какие-либо обновления для обработки. Например, он может искать файл XML, в котором сообщается новая версия приложения и какие файлы нужно обновить. Он закроет приложение / службы, создаст резервную копию файлов, которые необходимо обновить, запустит приложение / службы и очистит файлы резервной копии, сохраняя как минимум три файла резервной копии. Служба должна отслеживать последнюю и текущую версию, установленную таким образом, чтобы при чтении XML-файла она могла проверить, является ли оно новым обновлением или нет, или вы можете просто удалить XML-файл после его завершения.

0 голосов
/ 21 сентября 2010

Вы действительно хотите запустить обновление из базы данных или это просто возможное решение?Вы заново изобретаете колесо.

Посмотрите на развертывание ClickOnce, все, что вам нужно, уже сделано для вас и интегрировано в VisualStudio.Если вы используете что-то, что уже существует, вы можете воспользоваться существующей документацией, полезными блогами людей, которые уже прошли через болевые точки, а также обновлениями и исправлениями.

ClickOnce Deployment

Развертывание ClickOnce в .NET Framework 2.0

Способ использования ClickOnce зависит от того, что вы хотите от него получить.Из коробки вы можете очень легко создать развертывание, которое проверяет наличие обновлений каждый раз, когда вы запускаете приложение, но вы также можете с небольшим количеством кода проверить приложение на наличие обновлений во время его работы.

Блок приложения обновлений, о котором упоминал Доминик Цукевич, является предварительным курсором для ClickOnce.

EDIT

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

0 голосов
/ 21 сентября 2010

Microsoft имеет Блок приложения обновлений , который может быть тем, что вы ищете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...