假设有一个应用程序仅在
~/home/app
目录中创建目录。~/home/app
meta.json 中。
作为开发人员,用户很难删除文件夹或编辑 meta.json,因此只能通过应用程序更改这些内容。
如何创建一些“容器”目录,它对用户来说充当“未知文件”,但可以很容易地被应用程序“挂载”为目录?
例如有
*.kra
文件(由 Krita 创建),我可以用 zip 打开,尽管它不是存档,或者像 Appimage
文件一样可以作为目录读取。blob.myapp
这样的文件,它只是一组文件和目录。
AppImages 是自解压二进制文件,并附加有 squashfs 文件系统。文件系统是使用 FUSE 私有挂载的,因此只有程序及其子程序才能看到挂载目录的内容。另一方面,Krita 文件只是具有不同扩展名的 ZIP 文件。
您可以尝试 AppImage 的方法并使用 FUSE 挂载存档(例如使用 archivemount),但这仅适用于 Linux。
或者,您可以像 Krita 一样将数据存储在存档中。当程序启动时,您会读取存档并将所有内容保存在 RAM 中。当您的程序完成时(或定期完成以避免数据丢失),您将数据存储回存档中。
在实践中,所有这些都是值得的。相反,您应该将数据存储在正确的位置[1],这些位置通常对用户是隐藏的。如果用户弄乱了文件,那是他们的责任。
[1] 用户数据通常存储在 Windows 上的
%localappdata%
中或 Linux 上的 $XDG_CONFIG_HOME
/ $XDG_DATA_HOME
/ $XDG_STATE_HOME
中(取决于数据类型 - 避免使用用户的主目录)。