如何在autotools中注册“Linux”文件关联

时间:2011-06-14 14:24:20

标签: gnome autotools file-association xdgutils freedesktop.org

我正在编写一个使用自己文件类型的应用程序。我想将文件关联与桌面环境集成。我知道这可以完成with a command,但应该如何与autotools集成?

目前,我的应用可以在没有root的情况下安装到~/.local。保留这个功能会很好。

1 个答案:

答案 0 :(得分:3)

myapp.xml添加到包含所需MIME数据的项目中。它看起来像是:

<?xml version="1.0" encoding="UTF-8"?>
<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
  <mime-type type="image/png">
     <comment xml:lang="en">PNG image</comment>
     <comment xml:lang="af">png beeld</comment>
     ...
     <magic priority="50">
            <match type="string" value="\x89PNG" offset="0"/>
     </magic>
     <glob pattern="*.png"/>
  </mime-type>
</mime-info>

有关XML文件格式的更多详细信息,请参阅the tutorial

现在您需要确定将XML文件安装到何处。在我的项目中,我为--with-xdgdatadir提供configure选项,这是作为练习给读者留下的。默认情况下,XDGDATADIR应为${prefix}/share(即${datarootdir})。将以下内容添加到您的Makefile.am

xdgdatadir=@XDGDATADIR@
mimedir=$(xdgdatadir)/mime
xmldir=$(mimedir)/packages
xml_DATA = myapp.xml

这将确保正确安装MIME数据。

最后,有必要确保在make installmake uninstall上更新MIME数据库。将update-mime-database工具的检查添加到configure.ac。然后将以下内容添加到Makefile.am

install-data-hook:
    $(UPDATE_MIME_DATABASE) "$(DESTDIR)$(mimedir)"

uninstall-hook:
    $(UPDATE_MIME_DATABASE) "$(DESTDIR)$(mimedir)"

我希望能回答你的问题。

相关问题