Кроссплатформа MultiProgX

  • Автор темы Автор темы Arcady
  • Дата начала Дата начала

Arcady

Сотрудник
Команда LKDS
LKDS MultiProgX: альфа-версия утилиты массового обновления ЛБv7.x и устройств на CAN (пост 1 из 2)
Компания Лифт-комплекс ДС подготовила альфа-версию утилиты LKDS MultiProgX для обновления программного обеспечения устройств на платформе v7.x.
Проект предназначен для тех случаев, когда нужно не вручную обновлять один блок за другим, а подготовить список устройств, проверить связь с ними, выбрать источник прошивки, выполнить анализ и запустить обновление сразу по группе ЛБ.
Важно
Это альфа-версия для тестирования. Просьба использовать ее аккуратно: сначала проверять на ограниченной группе устройств, смотреть результат анализа, не запускать массовое обновление без понимания состава списка и выбранного режима.
Что умеет MultiProgX
  • Запускаться как обычное приложение без командной строки.
  • Вести список ЛБ для обновления.
  • Загружать список из файла и сохранять его обратно.
  • Показывать состояние связи по каждому ЛБ: online / offline.
  • Исключать offline-устройства из списка перед запуском, если это нужно оператору.
  • Работать и в старом аргументном режиме, чтобы можно было запускать утилиту из уже существующих сценариев.
  • Обновлять несколько ЛБ параллельно. Параметры параллельности передаются в формате аргументов или напрямую из интерфейса
  • Показывать ход анализа, обновления, ошибки и итоговое состояние.
  • Работает на трех языках - русский, английский, китайский.
Скриншоты
Стартовый экран со списком ЛБ:
2026_05_12_20_29_20.png
Основное окно обновления:
2026_05_12_20_30_40.png
На андройде:
IMG_20260512_213752.png
Как пользоваться
1. Запуск без аргументов

Если запустить программу обычным двойным щелчком, откроется стартовый экран со списком ЛБ.
В этом режиме можно:
  • добавить ЛБ;
  • скопировать строку ЛБ;
  • удалить строку;
  • загрузить список из файла;
  • сохранить список в файл;
  • проверить связь с выбранным ЛБ;
  • посмотреть общие цифры: сколько устройств в списке, сколько online и offline;
  • запустить обновление.
Строки списка хранятся в том же аргументном формате, который используется при запуске через командную строку. Это удобно: один и тот же профиль можно использовать и в UI, и в автоматизированном запуске.
Пример строки:
Код

-lu27309 -cloud -passQWerty123111111 -descr=Demo -parallel 10 -subparallel 3

2. Запуск через аргументы
Если программа запускается с аргументами, она сразу открывает основное окно обновления.
Пример:
Код

MultiProgX.Desktop.exe -lu27309 -cloud -passQWerty123111111 -parallel 10 -subparallel 3

Пример запуска по файлу со списком ЛБ:
Код

MultiProgX.Desktop.exe -fileD:/Temp/multiprogx_devices.txt -parallel 10 -subparallel 3

Параметры:
  • -lu — идентификатор ЛБ.
  • -cloud — подключение через облачный адрес по умолчанию.
  • -ip — явный адрес, если нужно подключаться не через cloud.
  • -port — порт подключения.
  • -pass — пароль.
  • -hash — HASH пароля в виде 16 байт HEX.
  • -file — путь к файлу со списком ЛБ. В текущей альфа-сборке для прямого запуска ключ пишется слитно с путем: -fileD:/Temp/multiprogx_devices.txt.
  • -descr — описание строки в списке.
  • -fw, -firmware, -archive — путь или URL архива прошивок, если источник нужно задать сразу при запуске.
  • -parallel — сколько ЛБ обновлять параллельно.
  • -subparallel — внутренняя параллельность внутри одного ЛБ.
Формат файла для -file
Файл содержит обычный текстовый список. Одна строка — один ЛБ. Формат строки такой же, как при запуске через аргументы.
Код

-lu27309 -cloud -passQWerty123111111 -descr=MachineRoom
-lu54172 -cloud -pass12345678a11144444 -descr=Entrance2
-lu60001 -ip192.168.1.50 -port4997 -passServicePassword -descr=LocalStand

Рекомендации по файлу:
  • Лучше сохранять файл в UTF-8.
  • Для прямого запуска через -file используйте простые строки без сложных кавычек.
  • Описание в -descr лучше писать без пробелов: например Entrance2 или Machine_Room.
  • Если список готовится через стартовый экран MultiProgX, программа сама сохраняет строки в нужном аргументном формате.
  • На Linux учитывайте регистр букв в пути к файлу.
3. Режим Online
Режим Online предназначен для загрузки актуального архива прошивок с сервера. После загрузки программа разбирает архив и готовит каталог доступных прошивок.
Используйте этот режим, если компьютер имеет доступ к серверу прошивок и нужно работать с актуальной версией архива.
4. Режим Offline
Режим Offline предназначен для выбора локального архива прошивок с диска.
Используйте этот режим, если архив уже скачан заранее или обновление выполняется в сети без доступа к серверу.
5. Режим Manual
Manual — ручной режим выбора действий после анализа. Он полезен, когда оператор хочет сам посмотреть найденные устройства, версии, страницы прошивки и принять решение перед записью.
6. Режим Forced
Forced — принудительный ручной режим, позволяющий например откатить прошивку на более позднюю версию или сменить тип ЛБ. Его следует использовать осторожно, только когда понятно, зачем нужно принудительное действие. Для обычного обновления сначала лучше пользоваться Online/Offline и анализом.
7. Анализ
Перед обновлением нажмите АНАЛИЗ. Программа перечитает структуру, сравнит найденные устройства с каталогом прошивок и покажет, что будет обновляться.
После анализа проверьте список устройств и только потом запускайте обновление.
8. Возврат к списку
В основном окне есть кнопка < в верхней панели. Она закрывает текущий процесс основного окна и возвращает к стартовому списку ЛБ.
Продолжение
Во втором сообщении — ссылки на сборки для Windows, Android, Linux и macOS, короткие инструкции установки и список того, что желательно проверить в альфа-тесте.
 

Вложения

  • 2026_05_12_20_29_20.png
    2026_05_12_20_29_20.png
    74.6 KB · Просмотры: 2
  • 2026_05_12_20_30_40.png
    2026_05_12_20_30_40.png
    182.3 KB · Просмотры: 2
  • IMG_20260512_213752.png
    IMG_20260512_213752.png
    652.6 KB · Просмотры: 2
Последнее редактирование модератором:
LKDS MultiProgX: файлы для тестирования и обратная связь (пост 2 из 2)
Файлы для тестирования


Windows x64, один exe, самодостаточная сборка, .NET Runtime устанавливать не нужно

Android APK:
Мини-инструкция для Android
Код

1 Скачайте APK на устройство.
2 Откройте файл ru.lkds.MultiProgX.apk.
3 Если Android запросит разрешение, разрешите установку приложений из этого источника.
4 После установки запустите MultiProgX из списка приложений.
5 Для установки через ADB: adb install -r ru.lkds.multiprogx-Signed.apk


Debian/Astra1.8/Ubuntu Linux x64, самодостаточная сборка

Мини-инструкция для Linux:
Код

mkdir -p ~/MultiProgX
cd ~/MultiProgX
wget https://lkds.ru/upload/programs/MultiProgX/linux-x64.tar.gz
tar -xzf linux-x64.tar.gz
chmod +x MultiProgX
./MultiProgX


Если приложение не открывается на чистой Linux-системе, проверьте наличие базовых библиотек графического окружения:
Код

sudo apt install libfontconfig1 libx11-6 libxext6 libice6 libsm6 libgl1


macOS Intel x64, самодостаточная сборка
macOS Apple Silicon arm64, самодостаточная сборка

Мини-инструкция для macOS:
Код

mkdir -p ~/MultiProgX
cd ~/MultiProgX
curl -L -O https://lkds.ru/upload/programs/MultiProgX/macos-osx-arm64.tar.gz
tar -xzf macos-osx-arm64.tar.gz
chmod +x MultiProgX
./MultiProgX


Если приложение не открывается на MAC-системе, значит она попала в карантин из-за отсутсвия подписи. Нужно подписать утилиту подписью вашего ПК, запустив скрипт fix-macos-sign.sh или выплнив:
Код

cd -- "$(dirname -- "${BASH_SOURCE[0]}")"
chmod +x ./MultiProgX
codesign --force --sign - ./MultiProgX
codesign --verify --verbose=4 ./MultiProgX
echo "MultiProgX подписан и готов к запуску."
echo "Запуск: ./MultiProgX"



Что желательно проверить в альфа-тесте
  • Запускается ли приложение на вашей системе.
  • Корректно ли отображается язык интерфейса.
  • Показывает ли стартовый список правильный online / offline статус ЛБ.
  • Удобно ли добавлять и сохранять список устройств.
  • Корректно ли открывается Online и Offline режим.
  • Правильно ли проходит анализ перед обновлением.
  • Понятны ли сообщения об ошибках.
Обратная связь
Если что-то работает не так, пожалуйста, указывайте:
  • операционную систему;
  • какую сборку запускали;
  • как запускали: без аргументов или через командную строку;
  • пример строки аргументов без секретных паролей;
  • что ожидали увидеть;
  • что произошло фактически;
  • скриншот или текст ошибки, если он есть.
  • очень упростит поиск папка с логами. находится в папках данных пользователя ОС. Для Win - C:\Users\<ПОЛЬЗОВАТЕЛЬ>\AppData\Local\LKDS\MultiProgX
Спасибо всем, кто поможет проверить альфа-версию. Чем больше разных реальных условий мы пройдем на тестировании, тем надежнее будет итоговая версия.
 
Последнее редактирование модератором:
А в чем основное преимущество данной утилиты по сравнению с групповым обновлением в LKDSDomain и LKDSServer?
 
revit написал(а):
А в чем основное преимущество данной утилиты по сравнению с групповым обновлением в LKDSDomain и LKDSServer?

Оцените сами. Совсем разные функции, назначение и контроль над действиями.
 
Последнее редактирование модератором:
Небольшое обновление. Косметическое по интерфейсу.
 
Код
hooligans88@MacBook-Air-Sergej MultiProgX % ./MultiProgX.Desktop
zsh: killed ./MultiProgX.Desktop

MacBook Air:
чип: Apple M4(arm)
память: 16гб
macOs: Tahoe 26.5 (25F71)
сборка: эта
 
hooligans написал(а):
Код
hooligans88@MacBook-Air-Sergej MultiProgX % ./MultiProgX.Desktop
zsh: killed ./MultiProgX.Desktop

MacBook Air:
чип: Apple M4(arm)
память: 16гб
macOs: Tahoe 26.5 (25F71)
сборка: эта


Выложена новая тестовая сборка LKDS MultiProgX v1.0.0.3.

Что изменено:

-исправлена ситуация, когда устройство с прошивкой новее текущего каталога могло выглядеть как кандидат на обновление;
-теперь если прошивка в устройстве новее каталога по версии или дате сборки, программа показывает корректное сообщение и не выбирает такое обновление автоматически;
-обновление такого устройства возможно только в принудительном режиме, осознанно пользователем;
-дополнительно вычитаны и поправлены строки локализации интерфейса и журнала для русского, английского и китайского языков;
-для macOS/Linux архивы перепакованы так, чтобы исполняемый файл после распаковки имел права на запуск.

Если на macOS при запуске будет сообщение вида zsh: killed, просьба сообщить:

-модель Mac и процессор;
-версию macOS;
-какой архив запускался: osx-arm64 или osx-x64;
-запускался ли файл из Finder или из терминала;
-вывод команды xattr -l ./MultiProgX.Desktop, если есть возможность проверить.

Сборка пока тестовая, поэтому обратная связь по запуску, локализации и поведению обновления особенно полезна.
 
Arcady написал(а):
Выложена новая тестовая сборка LKDS MultiProgX v1.0.0.3.

Что изменено:

-исправлена ситуация, когда устройство с прошивкой новее текущего каталога могло выглядеть как кандидат на обновление;
-теперь если прошивка в устройстве новее каталога по версии или дате сборки, программа показывает корректное сообщение и не выбирает такое обновление автоматически;
-обновление такого устройства возможно только в принудительном режиме, осознанно пользователем;
-дополнительно вычитаны и поправлены строки локализации интерфейса и журнала для русского, английского и китайского языков;
-для macOS/Linux архивы перепакованы так, чтобы исполняемый файл после распаковки имел права на запуск.

Если на macOS при запуске будет сообщение вида zsh: killed, просьба сообщить:

-модель Mac и процессор;
-версию macOS;
-какой архив запускался: osx-arm64 или osx-x64;
-запускался ли файл из Finder или из терминала;
-вывод команды xattr -l ./MultiProgX.Desktop, если есть возможность проверить.

Сборка пока тестовая, поэтому обратная связь по запуску, локализации и поведению обновления особенно полезна.

версия mac OS прежняя:26.5 (25F71)
Код
Аппаратное обеспечение:

Название модели: MacBook Air
Идентификатор модели: Mac16,12
Номер модели: MW123HN/A
Чип: Apple M4
Общее количество ядер: 10 (4 производительности и 6 эффективности)
Память: 16 ГБ
Версия системной прошивки: 18000.120.36
Версия загрузчика ОС: 18000.120.36

вывод команд терминала:
Код
Last login: Wed May 20 21:46:05 on ttys000
hooligans88@MacBook-Air-Sergej ~ % mkdir -p ~/MultiProgX
hooligans88@MacBook-Air-Sergej ~ % cd ~/MultiProgX
hooligans88@MacBook-Air-Sergej MultiProgX % curl -L -O https://lkds.ru/upload/programs/MultiProgX/macos-osx-arm64-standalone.tar.gz
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 38.8M 100 38.8M 0 0 6090k 0 0:00:06 0:00:06 --:--:-- 6564k
hooligans88@MacBook-Air-Sergej MultiProgX % tar -xzf macos-osx-arm64-standalone.tar.gz
hooligans88@MacBook-Air-Sergej MultiProgX % chmod +x MultiProgX.Desktop
hooligans88@MacBook-Air-Sergej MultiProgX % ./MultiProgX.Desktop
zsh: killed ./MultiProgX.Desktop
hooligans88@MacBook-Air-Sergej MultiProgX % xattr -l ./MultiProgX.Desktop
hooligans88@MacBook-Air-Sergej MultiProgX % ./MultiProgX.Desktop
zsh: killed ./MultiProgX.Desktop
hooligans88@MacBook-Air-Sergej MultiProgX %
\
программа запускалась из терминала, а из finder выдает "Не указана программа для открытия документа «MultiProgX.Desktop»."
 
Последнее редактирование модератором:
hooligans написал(а):
версия mac OS прежняя:26.5 (25F71)
Код
Аппаратное обеспечение:

Название модели: MacBook Air
Идентификатор модели: Mac16,12
Номер модели: MW123HN/A
Чип: Apple M4
Общее количество ядер: 10 (4 производительности и 6 эффективности)
Память: 16 ГБ
Версия системной прошивки: 18000.120.36
Версия загрузчика ОС: 18000.120.36

вывод команд терминала:
Код
Last login: Wed May 20 21:46:05 on ttys000
hooligans88@MacBook-Air-Sergej ~ % mkdir -p ~/MultiProgX
hooligans88@MacBook-Air-Sergej ~ % cd ~/MultiProgX
hooligans88@MacBook-Air-Sergej MultiProgX % curl -L -O https://lkds.ru/upload/programs/MultiProgX/macos-osx-arm64-standalone.tar.gz
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 38.8M 100 38.8M 0 0 6090k 0 0:00:06 0:00:06 --:--:-- 6564k
hooligans88@MacBook-Air-Sergej MultiProgX % tar -xzf macos-osx-arm64-standalone.tar.gz
hooligans88@MacBook-Air-Sergej MultiProgX % chmod +x MultiProgX.Desktop
hooligans88@MacBook-Air-Sergej MultiProgX % ./MultiProgX.Desktop
zsh: killed ./MultiProgX.Desktop
hooligans88@MacBook-Air-Sergej MultiProgX % xattr -l ./MultiProgX.Desktop
hooligans88@MacBook-Air-Sergej MultiProgX % ./MultiProgX.Desktop
zsh: killed ./MultiProgX.Desktop
hooligans88@MacBook-Air-Sergej MultiProgX %
\
программа запускалась из терминала, а из finder выдает "Не указана программа для открытия документа «MultiProgX.Desktop»."


похоже все крутится вокруг подписки эпла:

попробуйте вот так
Код

cd ~/MultiProgX
codesign --force --sign - ./MultiProgX.Desktop
codesign --verify --verbose=4 ./MultiProgX.Desktop
./MultiProgX.Desktop
 
Последнее редактирование модератором:
А как создать файл-список блоков для обновления? По одному вносить вручную?
 
Arcady написал(а):
похоже все крутится вокруг подписки эпла:

попробуйте вот так
Код

cd ~/MultiProgX
codesign --force --sign - ./MultiProgX.Desktop
codesign --verify --verbose=4 ./MultiProgX.Desktop
./MultiProgX.Desktop

Да действительно проблема была в этом теперь все работает. Обновил 3 лб + 3пу ПО ведет себя штатно. запускается только с теминала.
 
Последнее редактирование модератором:
hooligans написал(а):
Да действительно проблема была в этом теперь все работает. Обновил 3 лб + 3пу ПО ведет себя штатно. запускается только с теминала.

отличная новость, спасибо. учту при сборке дистрибов
 
revit написал(а):
А как создать файл-список блоков для обновления? По одному вносить вручную?

Как вариант.

В АСУД «Обь» тоже есть запуск с разными возможностями и из разных диалогов. Например, можно запускать на удалённом клиенте без прямого доступа к оборудованию.

Запускалку для лифтовой тематики тоже можно сделать, но только для ЛБ v7.x, и работать она будет только на сервере.

В Linux есть свой мультипрог. Ну и, как вы заметили, есть ещё групповое обновление в драйвере.
 
Последнее редактирование модератором:
Arcady написал(а):
для сотен блоков не реально
Arcady написал(а):
для лифтовой тематики(в линуксе есть свой мультипрог) тоже можно сделать, но только для ЛБv7.x и работать будет только на сервере. Ну и, как вы заметили, есть групповое обновление
так может просто сделать возможность загружать файл LKDSDomainUnits.xml?
 
Там всё не так просто, как кажется. Плюс есть Pro-версия, МПульт, Disp и новый Linux, есть Портал2.

Мы это сделаем, уже обдумываем варианты. Не нравится именно ограничение - запуск и вычитывание только с сервера...Утилит, которым нужен подобный запуск, стало довольно много, поэтому вместо того чтобы тащить один и тот же код в каждую утилиту, скорее всего правильнее будет сделать отдельный лаунчер.

Для нового кроссплатформенного СмартХауз нужен весь перечень базовых КРОССПЛАТФОРМЕННЫХ утилит. И нам не подойдут старые LBConfig/MProg/SmartTool/SDExplorer. Видео вообще станет встроенным в проект.
 
Последнее редактирование модератором:
Мне как администратору ЛДСС ОБЬ с большим кол-вом оборудования хотелось бы иметь инструмент для обновления всех прошивок ЛБ7 (основная, кодек, вайфай и такие же в ПУ) в LKDSDomain, т.к Multiprog так и не научился это делать. И эта утилита могла бы им стать, но вот загрузка текстового файла из 800 блоков сводит ее возможности на нет. Честно говоря я не понял из вашего сообщения, почему сейчас нельзя сделать загрузку файла XML, чтобы вычитать список ИД и ключей ... :(
 
Последнее редактирование модератором:
revit написал(а):
Мне как администратору ЛДСС ОБЬ с большим кол-вом оборудования хотелось бы иметь инструмент для обновления всех прошивок ЛБ7 (основная, кодек, вайфай и такие же в ПУ) в LKDSDomain, т.к Multiprog так и не научился это делать. И эта утилита могла бы им стать, но вот загрузка текстового файла из 800 блоков сводит ее возможности на нет. Честно говоря я не понял из вашего сообщения, почему сейчас нельзя сделать загрузку файла XML, чтобы вычитать список ИД и ключей ... :(

Этот метод не выдает перечень всех ЛБ, только тех, что лежат в БД. А есть еще про, ПКЛШ структуры. В общем прорабатываем варианты как сделать не быстро, а правильно. Подождите немного, а пока можете пробовать функционал в целом, разные режимы. Не забываете, что пока это честная альфа.
 
Я думал что она ориентирвана только на поколение 7 . Как бы с этими пклш и структурами опять не получился мультипрог...
Тот вроде более или менее справлялся со структурами и лб6.. Может и не стоит повторять его функционал?
 
revit написал(а):
Я думал что она ориентирвана только на поколение 7 . Как бы с этими пклш и структурами опять не получился мультипрог...
Тот вроде более или менее справлялся со структурами и лб6.. Может и не стоит повторять его функционал?


Только с устройствами v7.х, но народ продолжает собирать структуры по классике и уметь забирать оттуда список семерок было бы не плохо, возможно даже слать пакеты через те же ПКЛШ, если ЛБ добавлены через DHCP.
 
Назад
Сверху