Развертывание и автоматизация обновления - PullRequest
0 голосов
/ 15 июля 2009

У меня есть клиент-серверное приложение WCF, и я создаю MSI-проекты для обоих проектов. Сервер - это служба Windows, на которой размещается служба WCF, а клиент - приложение WPF. Теперь у меня есть требование автоматизировать механизм обновления клиента. То есть на открытом клиенте, он должен проверить, есть ли обновления на сервере, если да, загружает и устанавливает, а затем запускает. Должен ли я использовать клик после развертывания? Существуют ли стандартные механизмы, чтобы сделать это, или я должен реализовать это вручную? Какие еще предложения?
РЕДАКТИРОВАТЬ
Изучая ограничения по клику один раз, благодаря дорогим ответчикам, я обнаружил, что клик один раз не подходит для нашего приложения. Есть ли другой механизм? Что такое лучшие практики, чтобы сделать это с веб-сервисом ..?
Большое спасибо

Ответы [ 3 ]

2 голосов
/ 15 июля 2009

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

  • Он не позволяет вам выбирать, где установлены приложения. Он устанавливает их в запутанном месте под профилем пользователя. Да, это означает, что приложения ClickOnce загружаются и устанавливаются для пользователя , а не для компьютера .
  • Он просто синхронизирует файлы на компьютере пользователя с файлами на сервере, не более того. Вы не можете устанавливать сторонние msi-файлы, регистрировать dll, устанавливать сборки в GAC и т. Д.

Есть и другие предостережения, но эти два являются большими для большинства людей. Если вы можете обойти это, то ClickOnce может быть вариантом для вас.

Когда я попробую, я просто опубликую ваше приложение из Visual Studio и использую самоконтроль. Если вы решите использовать ClickOnce, вы, вероятно, захотите использовать MSBuild или MageUI для генерации своих развертываний, и вы можете захотеть купить сертификат подписи кода в центре сертификации (например, Verisign).

Редактировать
Просто хотел ответить на комментарий @Richard Dunlap. Он верен, вы можете указать предварительные требования в Visual Studio, и он создаст загрузчик для вас. Загрузчик избавляет пользователя от необходимости загружать ваши предварительные требования по отдельности, запускать их в правильном порядке и т. Д.

Однако , это в основном просто функция, которую предоставляет VS, и, IMO, она отделена от ClickOnce. ClickOnce ограничивается проверкой наличия сборки в GAC и последующей неудачной установкой, если это не так. На самом деле нет никакой связи между вашим загрузчиком и вашей установкой ClickOnce. Вы в значительной степени должны сказать пользователю: «Если у вас нет продукта x, y или z, пожалуйста, запустите эту программу начальной загрузки, прежде чем пытаться установить мое приложение». ClickOnce ничего не может сделать, чтобы проверить какой-либо сторонний COM-продукт и заставить пользователя установить его перед запуском приложения.

1 голос
/ 06 декабря 2010

Этот блог (http://coffeedrivendevelopment.blogspot.com/2008/09/clickonce-deployment-or-not.html) описывает его решение не использовать ClickOnce и простой механизм написания вашей собственной самообновляющейся программы. Он использует контроль исходного кода для проверки новой версии, но теоретически вы можете проверить местоположение, которое вы опубликуйте свою новую версию с другим индикатором версии (текстовый файл, база данных, вызов веб-службы и т. д.).

1 голос
/ 15 июля 2009

Это выглядит как прямое использование ClickOnce. Если вы хотите использовать автоматические обновления ClickOnce или выполнять программные обновления, зависит от следующих факторов:

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

  2. Если вы установите ClickOnce для проверки обновлений после запуска, вы сразу перейдете в приложение, но обновления не будут развернуты до следующего запуска приложения; Вы, конечно, можете уведомить пользователя о том, что обновленная версия теперь доступна, и дать возможность перезагрузки. Если пользователь может запустить старую версию в последний раз, это хорошо работает.

  3. Если оба эти параметра вызывают проблемы, вы можете использовать API для программных обновлений. Это то, что мы решили сделать - поскольку наше приложение ClickOnce является клиентом уровня представления, взаимодействующим с веб-службами, нашим клиентам всегда лучше использовать последнюю версию программного обеспечения. Тем не менее, мы хотим использовать время, пока приложение проверяет наличие обновлений, для выполнения какой-либо другой служебной работы (например, проверки подключения к веб-службам) - и мы хотим, чтобы пользователи видели наш логотип и название компании, пока они ждут. : -)

Достаточно, чтобы начать?

...