вторник, 19 августа 2008 г.

Как же можно обновлять MyChat?

Иногда у людей возникают вопросы по обновлению программы MyChat у клиентов. Сначала я недоумевал, как можно неправильно обновить программу, если есть setup, который нужно запустить и он сам всё сделает?

Оказывается, бывают разные нюансы. Описанию возможных вариантов и "подводных камней" и посвящена эта статья.

Вариант первый, оптимистичный. Все пользователи умнички и знают, что когда админ сказал, что чат нужно обновить с такого-то каталога файлового сервера - дружно завершают работу своего MyChat Client-а и устанавливают дистрибутив сверху. Что при этом происходит?


Запускается инсталлятор, автоматически находит прошлую установку (скажем, "D:\MyChat Client\") и устанавливает свежую версию поверху. Причём не тупо перезаписывая файлы, как делают некоторые админы, а "накатывая" только те файлы, которые были изменены в новой версии. Это, конечно, исполняемые файлы, справка, файлы ресурсов (переводы на различные языки) и прочее. База данных (главная и история сообщений) при этом не перезаписывается, иначе будут потеряны важные данные. Базы будут автоматически обновлены при первом запуске клиента, когда будет произведён контроль версий.

Тут могут быть подводные камни. Например, на компьютере установлено два или более клиентов чата. Тогда инсталлятор автоматом найдёт последний установленный вариант. А если пользователь не особо понимает, где именно и в каком каталоге у него чат-клиент (как правило, тётя-бухгалтер вообще не знает умных слов "дистрибутив", "клиент", "каталог" - да ей это и не нужно), мы получаем проблему. Однако проблема легко решается.

Вариантов решения несколько. Например, сделать BAT (или CMD) файл с единственной строчкой mccl37.exe /VERYSILENT /DIR="C:\Program Files\MyChat Client". Запустится инсталлятор в "тихом" режиме, не задавая никаких вопросов и программа установится в папку "C:\Program Files\MyChat Client". Это самый простой вариант.

Бывает, что клиенты чата запускаются в терминальной сессии. Установленных клиентов, скажем, штук 50 - и все на одном сервере, только в разных каталогах. Да, можно наклепать BAT-файлов и рассовать их по каталогам пользователей, но каждый раз это делать утомительно. Тут может сильно помочь WinScript - в этом скриптовом движке есть всё, что необходимо для подобной операции (включая определение имени залогинившегося пользователя, его персонального каталога и т.п.). С WinScript всё ограничивается только Вашей фантазией. Будут вопросы - обращайтесь на support@nsoft-s.com, я всегда помогу. Советом или куском кода :) Да, это наш продукт. Да, бесплатный :) Совсем-совсем.

Вариант второй, усложнённо-хакерско-технологичный :). Запуск инсталлятора в принципе недопустим. Вот нельзя и всё. Тут всё ложится на хилые плечи админа :). Он должен чётко понимать, как правильно обновить клиент, чтобы тот смог после такой операции корректно работать. Делается это так. Инсталлится на чистом месте новый клиент, затем всё что можно (все каталоги и файлы), кроме подкаталога "\DB" и его содержимого накатывается поверху старого клиента. Чтобы всё было вообще круто - надо бы завершить работу старого клиента перед такой операцией. Можно позвонить юзеру с просьбой нажать "Alt+X" или завершить его работу прямо с сервера, консольной командой "HALT" (или с клиента - если есть административные права). Читайте справку - там в разделе о консольных командах описано сиё заклинание :)

Вариант третий, самый правильный. В природе почему-то применяется редко. Когда выходит новая версия чата - админ устанавливает новый сервер поверху старого. Умудрённый опытом админ делает перед этим полный бекап :) Как правило, меняется протокол обмена данными клиента с сервером. Клиент, подключаясь, проверяет версию сервера, и, если она не подходит - соединяться отказывается. Однако показывает окошко, в котором предлагает автоматом обновиться с сервера. Кнопка обновления показывается только в том случае, если на MyChat сервере включен встроенный FTP и в "Администрировании"->"Разные настройки" выложен exe-дистрибутив новой версии клиента чата. В этом случае, при нажатии на кнопку обновления с сервера, будет автоматически скачан по ftp-протоколу дистрибутив, завершена работа старого клиента, установлен новый и запущен. Вуаля! Клиенту в итоге нужно нажать одну кнопку.

Но мы не ищем лёгких путей :)

_____________________________
Понравилась статья? Подпишись на RSS!

2 комментария:

Анонимный комментирует...

Вопрос по третьему варианту. Дистриб клиента новый нада сначала к серверу подцепить, до того как обновить сервер или после обновления?

Hobit комментирует...

А всё равно, как вам удобнее. Не забудьте только, что нужно exe файл инсталлятора клиента цеплять.