Относительные пути не поддерживаются *.
Одним из решений является наличие установщика.Этот скрипт обновляет файл рабочего стола в соответствии с местоположением, из которого запускается скрипт.Сделайте скрипт исполняемым, и пользователь сможет щелкнуть его для установки.Сценарий требует, чтобы файл рабочего стола был доступен для записи.
Это было сделано с учетом Linux.Файл называется autorun.sh ;но это просто соглашение, обычно оно не запускается автоматически.Если вы развернете это на чем-то отличном от Linux, то назовите файл как-нибудь еще ( autorun.linux ) или адаптируйте его для выполнения разных задач в зависимости от платформы.
#! /bin/sh
#### Fixup $APPNAME.desktop.
APPNAME=xvscatter
ICONNAME=xv_logo.png
cd $(dirname "$0")
APPDIR="$PWD/$APPNAME"
EXEC="$APPDIR/$APPNAME"
ICON="$APPDIR/$ICONNAME"
sed -i -e "s@^Icon=.*@Icon=$ICON@" \
-e "s@^Exec.*@Exec=$EXEC@" "$APPNAME.desktop"
*Для freedesktop принято использовать значки в $ HOME / .icons, / usr / share / icons или / usr / share / pixmaps.Под этими каталогами находятся подкаталоги для разных размеров и типов иконок.При использовании одного из этих каталогов для хранения значка в файле рабочего стола указывается только имя значка (без каталога);в противном случае запишите полный путь к файлу.
Исполняемый файл, если он указан в пути, может быть указан без указания пути (небезопасно).Лучше всего перечислить полный путь.Представьте, что запускается не та программа, потому что не указан полный путь.
Другая возможность - скопировать файл рабочего стола на рабочий стол пользователя или в / usr / share / apps и отредактироватьэто там.Делайте это, когда программа находится на носителе только для чтения.
Поскольку ни один из вышеперечисленных случаев не приводит к истинной установке, если возможно, используйте собственный установщик платформы и инструменты упаковки (rpm, dep, portage и т. Д.),Эти инструменты обеспечивают основу для полной установки, включая соответствующие права доступа к файлам (например, selinux) и меню рабочего стола.Они также обеспечивают легкое удаление.
Если программа должна запускаться со съемного носителя, рассмотрите возможность использования установки системы для простой установки символических ссылок, например, в /opt/vendor/progname.
.