• 首页
  • Qt文档
  • DTK文档
  • 玲珑文档
  • appimage打包基础步骤

    Appimage打包

    一、工具准备

    打包涉及工具 inuxdeployqt  patchelf   appimagetool
    
    工具下载链接:
    
    链接: https://pan.baidu.com/s/1vwZDd42co3PuDODRK3LUaw  密码: 6l20
    
    将下载的appimagetool-x86_64.AppImage ,linuxdeployqt-5-x86_64.AppImage 重命名为appimagetool,linuxdeployqt后,拷贝到系统目录下 /bin 并赋予可执行权限chmod a+x。 
    

    二、目录结构

    需要创建目录及文件
    
    xxx.AppDir-----------------------------------创建工作目录
    
    xxx.AppDir/AppRun-----------------------------------xx.AppImage运行时执行的程序,AppRun可以是可执行程序,也可以是脚本文件。
    
    xxx.AppDir/usr
    
    xxx.AppDir/usr/bin/xx--------------------------------主程序
    
    xxx.AppDir/usr/lib-----------------------------------库目录
    
    xxx.AppDir/usr/share/applications/xx.desktop---------界面程序启动文件
    
    xxx.AppDir/usr/share/icons/hicolor/xx.png------------界面程序图标
    

    实例:

    三、AppRun示例

    #!/bin/sh
    
    SELF=$(readlink -f "$0")
    
    HERE=${SELF%/*}
    
    export PATH="${HERE}/usr/bin/:${HERE}/usr/sbin/:${HERE}/usr/games/:${HERE}/bin/:${HERE}/sbin/${PATH:+:$PATH}"
    
    export LD_LIBRARY_PATH="${HERE}/usr/lib/:${HERE}/usr/lib/i386-linux-gnu/:${HERE}/usr/lib/x86_64-linux-gnu/:${HERE}/usr/lib32/:${HERE}/usr/lib64/:${HERE}/lib/:${HERE}/lib/i386-linux-gnu/:${HERE}/lib/x86_64-linux-gnu/:${HERE}/lib32/:${HERE}/lib64/${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}"
    
    export PYTHONPATH="${HERE}/usr/share/pyshared/${PYTHONPATH:+:$PYTHONPATH}"
    
    export XDG_DATA_DIRS="${HERE}/usr/share/${XDG_DATA_DIRS:+:$XDG_DATA_DIRS}"
    
    export PERLLIB="${HERE}/usr/share/perl5/:${HERE}/usr/lib/perl5/${PERLLIB:+:$PERLLIB}"
    
    export GSETTINGS_SCHEMA_DIR="${HERE}/usr/share/glib-2.0/schemas/${GSETTINGS_SCHEMA_DIR:+:$GSETTINGS_SCHEMA_DIR}"
    
    export QT_PLUGIN_PATH="${HERE}/usr/lib/qt4/plugins/:${HERE}/usr/lib/i386-linux-gnu/qt4/plugins/:${HERE}/usr/lib/x86_64-linux-gnu/qt4/plugins/:${HERE}/usr/lib32/qt4/plugins/:${HERE}/usr/lib64/qt4/plugins/:${HERE}/usr/lib/qt5/plugins/:${HERE}/usr/lib/i386-linux-gnu/qt5/plugins/:${HERE}/usr/lib/x86_64-linux-gnu/qt5/plugins/:${HERE}/usr/lib32/qt5/plugins/:${HERE}/usr/lib64/qt5/plugins/:${HERE}/usr/plugins/${QT_PLUGIN_PATH:+:$QT_PLUGIN_PATH}"
    
    EXEC=$(grep -e '^Exec=.*' "${HERE}"/*.desktop | head -n 1 | cut -d "=" -f 2 | cut -d " " -f 1)
    
    exec "${EXEC}" "$@"
    

    四、xx.desktop示例

    [Desktop Entry]
    
    Type=Application
    
    Name=xx
    
    Exec=xx
    
    Comment=Tool to generate AppImages from AppDirs
    
    Icon=logo
    
    Categories=Development;
    
    Terminal=false
    

    实例:

    五、打包与解压

    打包命令appimagetool  xxx.AppDir
    
    解压命令xxxx.appimage  --appimage-extract		##appimage的包自己支持解压,不需要别的工具
    

    实例:

    六、参考文档

    https://github.com/probonopd/linuxdeployqt/blob/master/BUILDING.md
    
    https://github.com/probonopd/linuxdeployqt/wiki/Custom-wrapper-script-instead-of-AppRun#example-wrapper-in-bash