.net (winforms, а не asp) многосерверное развертывание

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

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

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

Что я должен делать?


person poiuyttr    schedule 25.05.2010    source источник


Ответы (3)


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

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

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

person Kyle Rosendo    schedule 25.05.2010

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

person RobinDotNet    schedule 26.05.2010
comment
Для увеличения версии не нужно переиздавать? - person Kyle Rosendo; 26.05.2010
comment
Вы можете изменить номер версии с помощью MageUI и повторно подписать два манифеста, скопировать весь шебанг на веб-сервер, и вуаля, у вас есть новая версия. - person RobinDotNet; 27.05.2010
comment
Хороший! Спасибо за информацию, очень интересно. - person Kyle Rosendo; 28.05.2010

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

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

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

person Phil Sattele    schedule 28.05.2010