2

我的构建系统使用介子,将我的应用程序需要的一些文件放在 AppDir 下AppDir/usr/share/myapp/resources。应用程序在运行时需要读取和写入这些文件。当我查看文件时,这些文件位于 AppDir 中,但是当生成 .AppImage 时,独立运行的可执行文件无法访问这些文件。将应用程序与桌面集成时,应用程序安装在 中~/Applications,但不包含这些文件。

ninja install这是在不使用 AppImage ( )的情况下将应用程序安装在系统上时的外观的可视化

 usr
    share
         myapp
             resources
                 MainWindow.glade
                 dataCache.json

当我这样做时DESTDIR=AppDir ninja install,结构就这样结束了

 AppDir
     usr
         share
             myapp
                 resources
                     MainWindow.glade
                     dataCache.json

当应用程序 ( MyApp.AppImage ) 使用AppImageLauncher集成到用户桌面时,它只会将 AppImage 复制到 Applications 目录中。没有其他文件夹或文件。

编辑:我./linuxdeploy-x86_64.AppImage --appdir AppDir用来创建目录 AppDir。然后我使用DESTDIR=AppDir ninja install将应用程序安装到 AppDir,然后我使用./linuxdeploy-x86_64.AppImage --appdir AppDir --output appimage创建 AppImage

捆绑应用程序后,如何访问 AppDir 中的那些文件?或者如何让应用程序集成将这些文件复制到应用程序文件夹,以便应用程序可以在应用程序运行时访问它们?

4

1 回答 1

4

要在运行时解析 AppImage 挂载点,您可以使用APPDIR环境变量。例如,如果要解析,则usr/share/icons/hicolor/myicon.png需要使用以下路径$APPDIR/usr/share/icons/hicolor/myicon.png

建议您修改应用程序,以便能够根据二进制位置解析其资源。作为替代方案,您可以使用自定义环境变量在主二进制文件旁边设置路径或配置文件。

关于在 AppImage 中写入文件。这在设计上是不可能的。AppImage 是在运行时挂载的只读 SquashFS 映像。任何应用程序数据都应写入$HOME/.config$HOME/.local/share取决于它是配置数据还是其他类型的数据。推荐的工作流程是在第一次运行时复制此类数据。

有关是否复制应用程序数据的更多信息,请参阅https://www.freedesktop.org/wiki/Software/xdg-user-dirs/

于 2020-04-14T21:26:45.573 回答