AppRun文件格式?

AppRun file format?

我正在按照项目 Wiki 中的 Creating AppImages 创建一个 AppImage。我应该创建一个 AppRun 文件,但我没有看到有关该文件格式或如何创建它的任何文档。我的项目是一个 Python 应用程序,apt-appdir 不是一个选项,因为这是我团队的软件,在任何 repo 中都不可用。

这是 AppDir 的一般结构:

MyApp.AppDir/
MyApp.AppDir/AppRun
MyApp.AppDir/myapp.desktop
MyApp.AppDir/myapp.png
MyApp.AppDir/usr/bin/myapp
MyApp.AppDir/usr/lib/libfoo.so.0

您可以使用 functions.sh 帮助脚本来大大简化 AppDir 和 AppImage 的生成,而不是手动创建它。

请参阅 sample recipes on how to use this, and the AppImageSpec 了解更正式的格式规范。

找到了。 AppRun 位于指南开头创建的 AppImageKit 目录中。

您可能已经知道,AppImage(类型 2)是一种 SquashFS 压缩文件系统。在 运行-时间,它被挂载到一个临时的(即时创建的)挂载点以执行其有效负载。这项 "mounting" 业务由名为 "runtime" 的嵌入式组件负责。另一个嵌入式组件称为 "AppRun"

AppImage 内的 AppRun 任务是使用正确的参数和环境变量集调用 AppImage 的负载应用程序。

您的 AppImage 可以使用的 AppRun 有两个选项:

  1. 使用 标准 "AppRun" 二进制文件,由 AppImage 项目提供,可在此处下载: https://github.com/AppImage/AppImageKit/releases (注意,有两个版本可供下载:一个是i686的,一个是x64_86架构的。无论你选择哪个,你都必须将它重命名为简单的'AppRun' 如果你手动将它嵌入到你的 AppImage 中。) 标准的 AppRun 没有做任何特别的事情,很可能适用于超过 90% 的项目。

  2. 使用 custom AppRun,你必须自己编写它,它会做你可能想做的所有奇特的事情想象一下:实现额外的命令行参数,以非常具体的方式设置环境等。这里是一个相当复杂的 AppRun 示例:https://github.com/KurtPfeifle/ImageMagick/blob/master/appimage/AppRun (It does its work for example if you run an ImageMagick AppImage from here--help 参数).

    这样的 AppRun 甚至可以是 Bash(或任何其他语言)脚本。

在许多情况下,AppRun 可以只是 AppImage 顶级(根)目录的符号链接,指向(相对)usr/bin/[=37= 中的可执行文件] AppImage 中的路径应该足以调用和 运行 有效负载应用程序。