Вторая статья из цикла:
- Решение для работы внешней компоненты в веб-браузере под Windows: CMake + NSIS.
- Решение для работы внешней компоненты в веб-браузере под Linux: Cmake + Makeself (данная статья).
- Решение для работы внешней компоненты в веб-браузере под Windows и Linux: 1С + Installer.
Расширение веб-браузера от 1С для Linux тоже, что и для Windows.
Функционирование собственного приложения под Linux отличается от такового под Windows использованием директорий вместо реестра. Для веб-браузера Chrome используется директория "~/.config/google-chrome/NativeMessagingHosts", для Firefox - "~/.mozilla/native-messaging-hosts", для Chromium - "~/.config/chromium/NativeMessagingHosts". Знак "~/." означает "/home/<имя пользователя>/ ". В директорию веб-браузера помещается файл манифеста json. Формат файла для веб-браузера, такой же, как и для Windows.
Собственное приложение от 1С для Linux состоит из:
- Адаптер (исполняемый файл без расширения).
- Нативная библиотека (so).
- Файл манифеста для веб-браузера (json).
Адаптер и нативная библиотека помещаются в директорию "~/bin/<наименование компании>/<наименование продукта>/<версия>".
Имя файла манифеста имеет вид: "com.<наименование компании>.enterprise.<наименование продукта>.<версия>.json", файл помещается в соответствующую веб-браузеру директорию.
Алгоритм взаимодействия кода 1С с внешней компонентой в режиме веб-клиента не отличается от такового для Windows, кроме того, что вместо реестра используются указанные выше директории.
После загрузки файла установщика, необходимо перейти в директорию установки, пометить файл как исполняемый и запустить его на исполнение.
Структура решения
В целом, структура решения совпадает с таковой для 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.