English Chinese (Simplified)
Packaging Guidelines for AppData Files
If a package contains a GUI application, then it SHOULD install a `+.metainfo.xml+` file into `+%{_metainfodir}+`. Installed `+.metainfo.xml+` files MUST follow the https://www.freedesktop.org/software/appstream/docs/chap-Quickstart.html#sect-Quickstart-DesktopApps[AppStream specification page].
If a package contains an add-on for GUI application, then it SHOULD install a `+.metainfo.xml+` file into `+%{_metainfodir}+`. Installed `+.metainfo.xml+` files MUST follow the https://www.freedesktop.org/software/appstream/docs/sect-Quickstart-Addons.html[AppStream add-ons specification].
The AppData files MUST correctly validate using `+appstream-util validate-relax+`.
appdata.xml files
For historical reasons, AppStream specification also allows using extension `+.appdata.xml+` for GUI applications. If upstream provides metadata with `+.appdata.xml+` extension, it MAY be used instead of `+.metainfo.xml+`.
.metainfo.xml file creation
If the package doesn't already include and install its own `+.metainfo.xml+` file, you can make your own and send it upstream. Some benefits of sending the file upstream are that upstream can translate the file using the existing translation resources and can also modify the screenshots and descriptions as the application changes over time.
You may include an `+.metainfo.xml+` file you create as a Source: (e.g. `+Source3: %{name}.metainfo.xml+`) or generate it in the spec file.
Here are the contents of a sample application `+.metainfo.xml+` file (comical.metainfo.xml):
include::{examplesdir}/app.metainfo.xml[]
Application's AppData file MUST be named with the same root as the .desktop file, so if the .desktop file is named `+org.gnome.SomeApp.desktop+` then the AppData file MUST be called `+org.gnome.SomeApp.metainfo.xml+`.
Here are the contents of a sample addon `+.metainfo.xml+` file (gedit-bookmarks.metainfo.xml):
include::{examplesdir}/addon.metainfo.xml[]
You can use anything as the `+<id>+` but it needs to be unique and sensible and also match the `+.metainfo.xml+` filename prefix.
app-data-validate usage
Although you can just include the .metainfo.xml file in the package, you MUST run `+appstream-util validate-relax+` (in `+%check+` or `+%install+`) and have `+BuildRequires: libappstream-glib+`, to help ensure the validity and safety of the appdata files you're installing. An example:
appstream-util validate-relax --nonet %{buildroot}%{_metainfodir}/*.metainfo.xml