2010-09-28 12 views
2

我們正在開發需要在可移動設備(例如USB棒)上運行的應用程序。在Linux上,我們使用Gnome啓動程序在設備的根目錄上放置應用程序的快捷方式。但是,我們需要使用可執行文件和圖標的相對路徑,因爲我們事先不知道設備將在哪裏安裝。在.desktop文件我有類似:爲Gnome啓動器使用相對路徑

Exec的= ../MYAPP/myexecutable
圖標= ../MYAPP/myicon.png

無論是可執行文件或圖標中找到。我閱讀了.desktop文件中的圖標查找規範(http://standards.freedesktop.org/icon-theme-spec/icon-theme-spec-latest.html#icon_lookup),但它並沒有啓發我。

有沒有辦法讓發射器使用相對路徑?如果沒有,是否有另一種方法來實現我想要的(即使用相對路徑指定的帶有圖標和可執行文件的快捷方式)?

回答

3

相對路徑不支持*。

一個解決方案是有一個安裝程序。該腳本根據腳本運行的位置更新桌面文件。使腳本可執行,用戶可以單擊它進行安裝。腳本要求桌面文件是可寫的。

這是在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 "[email protected]^Icon=.*@[email protected]" \ 
    -e "[email protected]^Exec.*@[email protected]" "$APPNAME.desktop" 

*爲freedesktop的約定是在$ HOME/.icons,在/ usr /共享/圖標或/ usr /共享/像素圖的圖標。在這些目錄下是不同圖標大小和類型的子目錄。當使用這些目錄中的一個來存儲圖標時,桌面文件中僅列出圖標名稱(不含目錄);否則記錄文件的完整路徑。

可執行文件(如果在路徑中)可以列出而沒有路徑名(不安全)。最好列出完整路徑。想象一下,由於未指定完整路徑,因此啓動了錯誤的程序。

另一種可能性是將桌面文件複製到用戶的桌面或/usr/share/applications,然後在該處進行編輯。當程序在只讀媒體上時執行此操作。

因爲以上都沒有得到真正的安裝,所以如果可能的話,使用平臺的本地安裝程序和打包工具(rpm,dep,portage等)。這些工具提供了一個完整安裝的框架,包括適當的文件權限(思考selinux)和桌面菜單。他們還提供輕鬆卸載。

如果程序必須從可移動介質運行,請考慮使用系統安裝來安裝符號鏈接,可能是/ opt/vendor/progname。