Роботы, плагины и скрипты к чату MyChat. Разработка альтернативных клиентов и различных утилит. Технические вопросы по программированию, замечания и предложения по развитию API
Аватара пользователя
Алексей Пикуров
Скрипт написан специально для тех людей, у кого используется терминальный сервер WIndows. Обычно в таком случае MyChat Client устанавливается в папку C:\Program Files (x86)\MyChat Client\ , а Windows-пользователи уже запускают приложения каждый в своей сессии.

Профили настроек и история сохраняются в отдельных папках каждого Windows-пользователя и друг другу не мешают.

Проблема возникает, когда нужно обновить такой MyChat Client на новую версию. Прав на обновление клиента MyChat такие пользователи не имеют, а выйти из приложения, которое говорит им, что сервер более свежей версии и подключиться к нему не выйдет — не догадаются. Обновлять запущенный MyChat Client не выйдет, система будет "держать" используемые файлы.

Поэтому, схема обновления в таком случае будет такая:

1. На работающем сервере MyChat, перед обновлением, нужно запустить скрипт для отключения всех пользователей терминального сервера Windows.
2. Обновить сервер MyChat.
3. Обновить клиент MyChat на терминальном сервере.

Текст скрипта (версия MyChat 5.24+):

Код: Выделить всё
// ---------------------------------------
// Script created by Alexey Pikurov (hobit@nsoft-s.com)
// 24.01.2017 11:31:47
// ---------------------------------------
var
  sOnlineUINS: string;
  iUIN: integer;
begin
  sOnlineUINS := mGetUsersListByParams('online');
 
    while length(sOnlineUINS) > 0 do begin
      iUIN := StrToInt(GetNextSt(sOnlineUINS, ','));
      mHaltMyChatClient(iUIN);
    end;
end.