Лаунчер Gml.Launcher написан с использованием технологии Avalonia.
Avalonia для Linux может быть запущена на большинстве дистрибутивов Linux с помощью двойного щелчка по исполняемому файлу или через терминал. Тем не менее, для лучшего пользовательского опыта рекомендуется установить программу, чтобы пользователи могли запускать её через ярлык на рабочем столе, существующий в средах рабочего стола, таких как GNOME и KDE, или через командную строку, добавив программу в PATH.
Приложения для дистрибутивов, связанных с Debian и Ubuntu, упаковываются в файлы .deb, которые можно установить с помощью команды sudo apt install ./your_package.deb.
Руководство
В этом руководстве мы будем использовать инструмент dpkg-deb для компиляции вашего пакета .deb.
1) Организация файлов программы в папке подготовки
Пакеты Debian имеют следующую базовую структуру:
./staging_folder/
├── DEBIAN
│ └── control # файл управления пакетом
└── usr
├── bin
│ └── myprogram # стартовый скрипт
├── lib
│ └── myprogram
│ ├── libHarfBuzzSharp.so # библиотека Avalonia
│ ├── libSkiaSharp.so # библиотека Avalonia
│ ├── other_native_library_1.so
│ ├── myprogram_executable # основной исполняемый файл
│ ├── myprogram.dll
│ ├── my_other_dll.dll
│ ├── ... # все файлы, сгенерированные dotnet publish
└── share
├── applications
│ └── MyProgram.desktop # ярлык на рабочем столе
├── icons
│ └── hicolor
│ ├── ... # иконки различных разрешений (необязательно)
└── pixmaps
└── myprogram.png # основная иконка приложения
Значение каждой папки:
DEBIAN: содержит файл control.
/usr/bin/: содержит стартовый скрипт (рекомендуется для запуска программы через командную строку).
/usr/lib/myprogram/: содержит все файлы, сгенерированные dotnet publish.
/usr/share/applications/: папка для ярлыка на рабочем столе.
/usr/share/pixmaps/ и /usr/share/icons/hicolor/**: папки для иконок приложения.
2) Создание файла control
Файл control размещается в папке DEBIAN.
Этот файл описывает общие аспекты вашей программы, такие как её имя, версия, категория, зависимости, сопровождающий, архитектура процессора и лицензии. Более подробное описание всех возможных полей в файле можно найти в документации Debian.
Зависимости .NET можно перечислить, выполнив команду apt show dotnet-runtime-deps-8.0 (суффикс меняется для других версий .NET); они будут отображены в строке, начинающейся с Depends: .... Зависимости Avalonia включают: libx11-6, libice6, libsm6, libfontconfig1. В целом, все зависимости .NET и Avalonia обязательны, плюс любые другие, специфичные для вашего приложения.
Этот шаг рекомендуется по двум причинам: во-первых, для уменьшения сложности ярлыка на рабочем столе, а во-вторых, для того, чтобы ваше приложение можно было запустить из терминала.
Имя файла стартового скрипта должно быть предпочтительно myprogram (без расширения .sh), чтобы при вводе "myprogram" в терминале пользователи могли запустить ваше приложение.
Файл myprogram_executable обычно имеет то же имя, что и его .NET проект, например, если ваш Avalonia .csproj проект называется MyProgram.Desktop, то основной исполняемый файл, сгенерированный dotnet publish, будет MyProgram.Desktop.
Пример стартового скрипта:
#!/bin/bash
# используем exec, чтобы скрипт-обертка не оставался как отдельный процесс
# "$@" для передачи аргументов командной строки приложению
exec /usr/lib/myprogram/myprogram_executable "$@"