引言

起初,我在针对deepin制做一款appimage安装工具,想要其实现的功能就是自动获取图标,只须要输入软件名称和分类便可,固然之后也会寻找方案省去手动输入的麻烦。html

后来我发现一个有趣的问题linux

openshot有些特立独行,我没法使用传统的方案,--appimage-extract参数来为其解包,以致于很长时间内,软件都是靠判断文件名来实现自动获取图标的。ubuntu

可是随着我发现愈来愈多“特立独行”的软件包,我开始寻找答案。bash

首先,我注意到一些细节。

e01镜像文件挂载虚拟机 虚拟机挂载iso镜像文件_文件名

app

在deepin操做系统上,二者虽然都是AppImage,可是图标显示的不一样,说明他们的minetype存在差别。工具

因而我找到了下面这两个文件

e01镜像文件挂载虚拟机 虚拟机挂载iso镜像文件_解包_02

操作系统

发现确实存在两个不一样的appimage格式,并且,其中一个是iso9660。3d

因而我全盘搜索其中一个,找到了这个图标:

e01镜像文件挂载虚拟机 虚拟机挂载iso镜像文件_文件名_03

code

这就表示,那个“特立独行”的人,就是x-iso9660-appimage,因而我寻找将它的文件读取出来的办法,首先,基于我弱鸡的linux基础,我发现mount能够成功挂载这个文件,可是有一个不可忽视的问题,mount须要root。htm

其实若是这是平常使用,mount就够了,只是输入一下密码而已。

可是有什么方案能不须要root将其中内容取出来?

开始尝试了7z,安装u7zip后,使用7z能够成功将其解包,可是并且这对于普通的vnd.appimage一样有效,可是貌似这个有可能致使文件损坏,好比我解包openshot时,其中的图标就没法查看了,用mount挂载时是能够的。我尚不清楚这个现象的缘由,开始怀疑是否是iso9660类型特有的问题,后来发现不是。

因而我又开始寻找,找到了fuseiso

其能够无需root权限将iso挂载到指定目录。

fuseiso的使用

挂载:

fuseiso -p

#-p的做用是当目标文件夹不存在时自动建立

卸载:

fusermount -u

至此,就但是实现无需root挂载镜像了,也实现了x-iso9660-appimage文件内容的读取。