.net (winforms, not asp) развертывание на нескольких серверах - PullRequest
3 голосов
/ 26 мая 2010

У меня есть небольшое приложение .NET WinForms и пара серверов linux, DEV и CL1, CL2..CLN (DEV - это сервер разработки, а CL * - это серверы, принадлежащие нашим клиентам, они находятся в частных сетях, и это вид производственных серверов)

Я хочу механизм обновления, чтобы
(1) я разрабатываю новую версию и публикую ее на DEV
(2) пользователи DEV-сервера устанавливают последнюю версию DEV
(3) пользователи CL2 (сотрудники client2) устанавливают стабильную версию непосредственно из CL-2
(4) приложение проверяет наличие обновлений, используя сервер, с которого оно было установлено (поэтому, если оно было установлено из CL-2, оно должно проверять наличие обновлений в CL-2)
(5) я должен быть в состоянии распространить обновление на выбранный CL-сервер (используя только копию файла и, возможно, sed; не переиздавать), если я этого захочу (и если я этого не сделаю, у этого CL-сервера будет старый версия, пока я не обновлю ее вручную)

Я пытался использовать clickonce, но, похоже, он соответствует только первым двум требованиям.

Что мне делать?

Ответы [ 3 ]

4 голосов
/ 26 мая 2010

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

То, что вы могли бы затем сделать, чтобы сделать 5. применимым, - это создать автоматизированный процесс для повторной публикации файла. Это может выполнить публикацию и затем загрузить на правильный сервер.

Помните, что ClickOnce нужен новый манифест для каждой версии, а новая версия требует публикации, поэтому я не уверен, что вы получите 5. с простой заменой файла.

2 голосов
/ 26 мая 2010

Кайл прав. Но для 5-й заметки вам просто нужно скопировать развертывание, а затем использовать mage, чтобы изменить установочный URL-адрес и указать его на новом сервере, а затем заново подписать манифесты.

0 голосов
/ 28 мая 2010

Я поддерживаю приложение, которое мы разворачиваем на серверах DEV, QA, PROD. То, как я справился с этим, заключается в том, что Я создал созданный cmd-файл, который имеет вызовы командной строки для MSBUILD. Он создает приложение один раз для каждого сервера с соответствующими URL-адресами и переключателями. Я даю своему DEV, а QA создаю другое AssemblyName, чтобы я мог запускать все 3 среды одновременно. Таким образом, мой процесс сборки автоматизирован, и мне вообще не нужно публиковать.

Вот статья, которая описывает параметры, которые вы можете использовать. http://msdn2.microsoft.com/en-us/library/ms165431(VS.80).aspx

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

...