Найти в Дзене

Решение для работы внешней компоненты в веб-браузере под Linux: Cmake + Makeself

Небольшой цикл статей про внешние компоненты (ВК) для веб-браузеров. Цель – описать общий механизм взаимодействия платформы 1С и ВК в этом режиме, предложить как доработанное решение, основанное на примере от 1С, так и собственную разработку - внешнюю обработку 1С. Решение позволяет обеспечивать работу в веб-браузере для любой нативной библиотеки, разработанной на основе шаблона ВК от 1С и работающей в тонком клиенте. На вход решение получает наименование компании, продукта, номер версии и т.д., а также файл библиотеки, на выходе - zip-архив для загрузки в макет в 1С. Вторая статья из цикла: Расширение веб-браузера от 1С для Linux тоже, что и для Windows. Функционирование собственного приложения под Linux отличается от такового под Windows использованием директорий вместо реестра. Для веб-браузера Chrome используется директория "~/.config/google-chrome/NativeMessagingHosts", для Firefox - "~/.mozilla/native-messaging-hosts", для Chromium - "~/.config/chromium/NativeMessagingHosts". Зна

Небольшой цикл статей про внешние компоненты (ВК) для веб-браузеров. Цель – описать общий механизм взаимодействия платформы 1С и ВК в этом режиме, предложить как доработанное решение, основанное на примере от 1С, так и собственную разработку - внешнюю обработку 1С. Решение позволяет обеспечивать работу в веб-браузере для любой нативной библиотеки, разработанной на основе шаблона ВК от 1С и работающей в тонком клиенте. На вход решение получает наименование компании, продукта, номер версии и т.д., а также файл библиотеки, на выходе - zip-архив для загрузки в макет в 1С.

WinLinCMake_1_0_1_1.zip

Вторая статья из цикла:

  1. Решение для работы внешней компоненты в веб-браузере под Linux: Cmake + Makeself (данная статья).

Расширение веб-браузера от 1С для Linux тоже, что и для Windows.

Функционирование собственного приложения под Linux отличается от такового под Windows использованием директорий вместо реестра. Для веб-браузера Chrome используется директория "~/.config/google-chrome/NativeMessagingHosts", для Firefox - "~/.mozilla/native-messaging-hosts", для Chromium - "~/.config/chromium/NativeMessagingHosts". Знак "~/." означает "/home/<имя пользователя>/ ". В директорию веб-браузера помещается файл манифеста json. Формат файла для веб-браузера, такой же, как и для Windows.

Собственное приложение от 1С для Linux состоит из:

  1. Адаптер (исполняемый файл без расширения).
  2. Нативная библиотека (so).
  3. Файл манифеста для веб-браузера (json).

Адаптер и нативная библиотека помещаются в директорию "~/bin/<наименование компании>/<наименование продукта>/<версия>".

Имя файла манифеста имеет вид: "com.<наименование компании>.enterprise.<наименование продукта>.<версия>.json", файл помещается в соответствующую веб-браузеру директорию.

Алгоритм взаимодействия кода 1С с внешней компонентой в режиме веб-клиента не отличается от такового для Windows, кроме того, что вместо реестра используются указанные выше директории.

Сообщение платформы 1С о загрузке установщика в Firefox
Сообщение платформы 1С о загрузке установщика в Firefox

После загрузки файла установщика, необходимо перейти в директорию установки, пометить файл как исполняемый и запустить его на исполнение.

Пометка файла как исполняемого
Пометка файла как исполняемого

Структура решения

В целом, структура решения совпадает с таковой для Windows, отличий немного:

Вместо NSIS используется Makeself, в каталоге NativeAPI должны быть нативные библиотеки формата AddIn<32|64>.so, в подкаталоге project нужно запускать скрипты linux_build64.sh и linux_build32.sh.

Работа с решением

Для работы с решением необходимо предварительно настроить Linux, установив пакеты:

Пакет CMake: sudo apt install cmake
Пакеты, необходимые для компиляции программного обеспечения:
sudo apt-get install build-essential
Утилиты для работы с исполняемыми и связываемыми файлами:
sudo apt-get install elfutils
Файлы разработки для библиотеки GTK:
sudo apt-get install libgtk-3-dev

Работа с решением строится по следующему принципу: заполняем своими значениями файл settings.cmake, копируем в каталог NativeAPI скомпилированные нативные библиотеки, выполняем в консоле скрипт linux_build64.sh или linux_build32.sh, в зависимости от разрядности ОС.

Лог выполнения скрипта
Лог выполнения скрипта

если в консоле не было ошибок, в каталог project\build\pkg будут помещены файлы с библиотекой, установщиком и манифестом. В каталог project\build будет помещен собранный пакет в формате zip для загрузки в макет 1С. Пакет формируется для той ОС, в которой запущен скрипт. Какого-то механизма объединения пакетов для разных ОС и разрядностей в один в примере от 1С не предусмотрено.  Впрочем, это несложно сделать вручную - нужно просто добавить в zip-архив файлы библиотек и установщиков. Файл manifest.xml сразу идёт с значениями для всех вариантов, его дорабатывать не нужно.

Тестирование

Решение тестировалось:

в Ubuntu 22.04 x64, CMake 3.22.1, gcc 11.4.0, 1С:Предприятие 8.3 (8.3.23.1912), Firefox 110.0.1 , 122.0.1 не snap!!!, Chrome 120.0.6099.224,

в Debian 12.04 x32, CMake 3.25.1, gcc 12.2.0, 1С:Предприятие 8.3 (8.3.23.1997), Firefox 115.7.0esr (32-разрядный), Chrome 120.0.6099.224.