2010-12-10 3 views
3

は/ usr/share/applicationsに、のxdg-デスクトップメニューコマンドとアップデートデスクトップ-databaseコマンドでの.desktopファイル間の関係は何ですか?デスクトップメニュー、の.desktopファイルとのxdg-デスクトップメニュー

私は私のアプリのためのデスクトップアイコンを作成するRPMを作成しようとしています。 RPMでは、vendor-appname.desktopファイルを/ usr/share/applicationsにインストールします。次に、インストール後のスクリプトがあります:

if [ -x "`which xdg-desktop-menu 2>/dev/null`" ]; then 
    xdg-desktop-menu install $RPM_BUILD_ROOT/usr/share/applications/vendor-myapp.desktop 
fi 

if [ -x "`which update-desktop-database 2>/dev/null`" ]; then 
    update-desktop-database &> /dev/null || : 
fi 

アイコンが作成されていません。

xdg-desktop-menu install $RPM_BUILD_ROOT/usr/share/applications/vendor-myapp.desktop 

コマンドを後で手動で実行すると、アイコンは非ルートとして作成されます。私がルート(これはRPMがそれをどうやってやっているのだろう)としてそうするなら、アイコンは作成されません。また、[]ビットが実行されていない場合のupdate-desktop-databaseが非常に強い疑いを持っています。これは、if[]ステートメント全体を手動で実行するときに実行されます。

GnomeのではFedora Linuxの。 Fedoraのオン

+0

のxdg-アイコンリソース? – OliJG

答えて

2

の確認してください。そして、(%は、{SOURCE1}は、デスクトップのファイルである)

 
BuildRequires: desktop-file-utils 
Requires(post): desktop-file-utils 
Requires(postun): desktop-file-utils 

 

%install 
[...] 
desktop-file-install         \ 
--dir=${RPM_BUILD_ROOT}%{_datadir}/applications   \ 
%{SOURCE1} 
[...] 

%post 
update-desktop-database &> /dev/null || : 

%postun 
update-desktop-database &> /dev/null || : 

あなたがあなた自身のアイコンをインストールした場合、あなたも更新する必要がありますアイコンキャッシュ、相対的なspecファイルのセクションに追加:

 
%post 
touch --no-create %{_datadir}/icons/hicolor &>/dev/null || : 

%postun 
if [ $1 -eq 0 ] ; then 
    touch --no-create %{_datadir}/icons/hicolor &>/dev/null 
    gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : 
fi 

%posttrans 
gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : 

参考文献:

関連する問題