在OSX上创建文件包

时间:2011-05-29 17:42:07

标签: macos zip bundle macos-carbon file-extension

对于一个应用程序,我想将一组文件存储在一起,并将它们作为单个文件出现在文件系统中,以便于管理。我目前将所有内容存储在一个文件夹中。

我想保持可访问的内容,以便您可以根据需要手动编辑内部内容。

执行此操作的一种方法是创建一个zip存档,并为其提供除.zip之外的自定义扩展。然后它显示为文件类型,如果需要,您可以解压缩并访问内容,但是为了正常使用,请将其隐藏起来。

我似乎找不到方便的方法来做到这一点。 Boost和zlib可以进行压缩,但不能与归档一起使用。我找到了libzip,但我很难理解如何使用它,对我而言,似乎它只读取/写入zip存档而不进行实际压缩。

有没有更方便的方法解决这个问题?

您是否可以调用系统函数来从c ++ / Carbon在OSX上创建存档?

是否有另一种方法可以使文件夹显示为单个文件?

2 个答案:

答案 0 :(得分:5)

在OSX中,您可以创建Document Packages(类似于应用程序包),它们在Finder中被视为单个文件,但实际上只是具有某种内部结构的目录。

Apple不会压缩这些软件包,但它们确实提供了您描述的功能,可以使用CFBundleRef通过CoreFoundation创建和访问它们。

来自文档:

  

...关于创建文档包的重要一点是它只是一个目录。只要注册了文档包的类型(如“Registering Your Document Type”中所述),您所要做的就是创建一个具有相应文件扩展名的目录。 (Finder使用文件扩展名作为其提示将目录视为包。)您可以使用标准BSD文件系统例程创建目录(并创建要放在该目录中的任何文件)...

答案 1 :(得分:3)

作为第一步,简单地重命名该文件夹并添加扩展名.bundle,例如Myappdir.bundle

这会将整个文件夹显示为一个带有lego-like捆绑图标的文件。

下一步是你必须在里面创建一个Info.plist文件。