如何从 AppImage 中提取文件?

如何从 AppImage 中提取文件?

简单的问题,如何从 AppImage 中提取文件?

GUI、CLI,没关系,只要能完成工作就行。

如果有必要的话,我会使用 openSUSE Tumbleweed

答案1

第一的,看看你的 AppImage 文件是否使用其内部格式的最新版本:

/path/to/your.AppImage --appimage-help

如果您在输出中看到以下行:

--appimage-extract              Extract content from embedded filesystem image

你可以自己决定如何继续。在这种情况下,你有一个(较新的)类型 2AppImage 格式。(命令的“路径”部分可以是相对的,也可以是绝对的。)

第二如果第一个命令不起作用,您可以使用辅助工具。但是,您需要 sudo/root 权限才能执行此操作:下载appimagetool(当然,它也可以作为 AppImage 使用)。使其可执行并运行:

/path/to/appimagetool-x86_64.AppImage --list /path/to/your.AppImage

这将为您提供嵌入的所有文件及其(相对)路径的列表你的.AppImage。 提取你的.AppImage进入名为并位于的目录/路径/到/somedir, 跑步

mkdir /path/to/somedir
/path/to/appimagetool-x86_64.AppImage /path/to/your.AppImage /path/to/somedir

第三另外,您也可以不使用辅助工具来挂载 AppImage(类型 1 以及类型 2):

  • 第 1 类:

    mkdir mountpoint
    sudo mount -o loop my.AppImage mountpoint/
    
    # You can now inspect the contents
    # You can now also copy the contents to a writable location of your hard disk
    
    sudo umount mountpoint/
    # Do not forget the umount step!
    # If you do forget it, your system may exhibit unwanted behavior.
    
  • 类型 2:

    mkdir mountpoint
    my.AppImage --appimage-offset
    123456   # This is just an example output
    
    sudo mount my.AppImage mountpoint/ -o offset=123456
    
    # you can now inspect the contents
    
    sudo umount mountpoint/
    # Do not forget the umount step!
    # If you do forget it, your system may exhibit unwanted behavior.
    

对“偏执狂”的提示:如果您不想信任 AppImage,则第三种方法更可取。因为运行(对于类型 2 AppImage)the.AppImage --appimage-extractthe.AppImage --appimage-mountthe.AppImage --appimage-offset意味着您实际上正在执行 AppImage(但不是其内容)。

更新:

回答下面评论中@jayarjo 的问题(修改后如何重新打包AppImage?):

  1. 您可以使用图像处理工具不仅仅是将现有的 AppImage 提取到 AppDir 中。您还可以使用它来将 AppDir(可能在进行一些更改后)重新打包回(修改后的)AppImage。

  2. 赶紧跑

     appimagetool -v /path/to/AppDir
    

    观察命令的输出(通过-v) 作为新创建的 AppImage 的位置和名称。就这样。

答案2

将扩展名重命名为 .7z

$ mv file.AppImage file.7z

使用 file-roller 提取

$ file-roller --extract-here file.7z 

在 Linux Mint 上测试。

答案3

我仅使用右键单击重命名,例如:

压缩-pdf-v0.1-x86_64.AppImage

到:

压缩-pdf-v0.1-x86_64.zip

然后右击

“从这里提取”

和工作

将所有文件解压到一个文件夹中

答案4

根据此处的答案,我创建了这个简单的 bash 脚本。但我从未遇到过可以用循环设备提取的 AppImage。编辑:刚刚做了:“wxHexEditor”

这里:

#!/bin/bash

APP="$2"
UNPK="$(echo $APP | sed 's/\.AppImage//')"

case "$1" in
  -a)
      chmod +x $APP;
      ./$APP --appimage-extract
      mv squashfs-root $UNPK
      ;;
  -b)
      mkdir -p /tmp/$UNPK
      sudo mount -o loop $APP /tmp/$UNPK &>/dev/null
      mkdir -p ~/Desktop/$UNPK
      cp -R /tmp/$UNPK/* ~/Desktop/$UNPK &>/dev/null
      sudo umount /tmp/$UNPK
      ;;
  *)
      echo
      echo "   Usage: appunpack [option] AppImageFile"
      echo 
      echo "   Options: -a  Unpack using --appimage-extract"
      echo "            -b  Unpack using a loop device"
      ;;
esac

相关内容