我正在创建一个 AppImage,在项目 Wiki 中创建 AppImages之后。我应该创建一个 AppRun 文件,但我没有看到有关该文件格式或如何创建它的任何文档。我的项目是一个 Python 应用程序,而 apt-appdir 不是一个选项,因为这是我团队的软件,在任何 repo 中都不可用。
3 回答
您可能已经知道,AppImage(类型 2)是 SquashFS 压缩的文件系统。在运行时,它被挂载到一个临时(动态创建的)挂载点以执行其有效负载。这种“安装”业务由称为“运行时”的嵌入式组件负责。另一个嵌入式组件称为“AppRun”
AppImage 中的 AppRun 的任务是使用正确的参数和环境变量集来调用 AppImage 的有效负载应用程序。
AppImage 可以使用的 AppRun 有两个选项:
使用标准的“AppRun”二进制文件,由 AppImage 项目提供,可在此处下载:https ://github.com/AppImage/AppImageKit/releases (请注意,有两个版本可供下载:一个用于 i686,一个用于 x64_86架构。无论您选择哪种,如果您手动将其嵌入到 AppImage 中,则必须将其重命名为简单的“AppRun”。)标准的 AppRun 没有做任何特别的事情,很可能适用于超过 90% 的项目。
使用您必须自己编写的自定义AppRun,它将完成您可能想象的所有花哨的事情:实现额外的命令行参数,以非常特定的方式设置环境等。这里有一个相当复杂的 AppRun 示例:https://github.com/KurtPfeifle/ImageMagick/blob/master/appimage/AppRun (例如,如果您使用参数从此处运行 ImageMagick AppImage, 它会起作用
--help
)。这样的 AppRun 甚至可以是 Bash(或任何其他语言)脚本。
在许多情况下,AppRun 可以只是从 AppImage 的顶级(根)目录指向 AppImage 内(相对)usr/bin/路径中的可执行文件的符号链接,这足以调用和运行有效负载应用程序。
找到了。AppRun 位于指南开头创建的 AppImageKit 目录中。
这是 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 的生成。
有关如何使用它的示例配方,请参阅AppImageSpec以获得更正式的格式规范。