使用 MiniZip 库读取 omni.jar 存档文件

Posted

技术标签:

【中文标题】使用 MiniZip 库读取 omni.jar 存档文件【英文标题】:Read omni.jar archive file with MiniZip library 【发布时间】:2012-03-14 09:08:56 【问题描述】:

Firefox 将其默认配置信息存储在omni.jar(旧版本)或omni.ja(更高版本)中。 omn​​i.jar 和 omni.ja 都只是 zip 文件格式。所以我们可以使用很多程序/库来压缩或解压它们。

我想获取一些 Firefox 的默认信息。所以我必须阅读那些omni文件中的一些文件。我使用 7zip 程序查看omni 或MiniZip/Zlib 库的内容来读取程序中的omni。

使用更高版本的omni.ja,它可以很好地阅读。但是对于旧版本,MiniZip 无法打开 omni.jar 文件。然后我使用 7zip 打开这些文件:omni.ja 没问题,omni.jar 失败了。但是对于其他一些程序,例如:WinRar,WinZip,...两个全能文件都可以很好地打开。

我是 google 并获得了一些信息:在旧版本中,Firefox 创建了没有 zip 标准的 omni.jar 文件(一种 zip 文件格式)。呸呸呸。但是为什么 WinRar 或 WinZip 可以读取。

谁能帮我让 MiniZip 正确读取omni.jar 文件?

非常感谢。

【问题讨论】:

如果我们用记事本打开一个zip文件,我们会看到它是以“PK”开头的。但对于较旧的 Firefox omni.jar 文件,它以“ü¬”开头。 一个不幸的消息:developer.mozilla.org/en-US/docs/Mozilla/… 【参考方案1】:

解决方案非常简单:您的“旧”omni.jar 已损坏。我的omni.jarPK 开头。

我建议再次从official archive 下载Firefox。

[编辑] 似乎不同版本的 Firefox 使用不同的工具来构建 ZIP 存档。 en-US 版本使用类似 ZIP 的格式,它不以 PK 开头。虽然理论上文件格式是有效的(它包含数据和条目列表),但几乎没有工具真正支持这种格式(因此 WinZIP 和 WinRAR 是例外)。

这一意图体现在将omni.jar 重命名为omni.ja:它没有加密,它只是一种未被广泛支持的ZIP 格式和US Firefox developers don't want to change this。

其他开发人员(例如 de 版本)使用官方工具构建omni 存档,因此可以使用任何工具修改这些版本。

您需要找到一种使用 WinZIP / WinRAR 更新存档的方法,或者您需要下载原始 firefox 源并将补丁添加到构建过程中。

【讨论】:

我从官方存档下载了FF。结果是一样的。 为什么 7-Zip 不能打开一些 ZIP 档案?在 99% 的这些情况下,这意味着存档包含不正确的标题。其他 ZIP 程序可以打开一些带有错误标题的档案,因为这些程序只是忽略错误。如果你有这样的存档,请不要打电话给 7-Zip 开发人员。而是尝试找到用于创建存档的程序,并通知该程序的开发人员他们的软件不兼容 ZIP。还有一些 ZIP 档案使用 7-Zip 不支持的方法进行编码,例如 WAVPack (WinZip)。 那么,omni.jar 是否包含不正确的标头。或者,omni.jar 是否使用不受支持的方法进行编码,WAVPack (WinZip)? 我的 omni.jar 来自 Firefox 4.0.1。你能在不同的电脑上试试吗? omn​​i.jar 包含大量 Firefox 代码,因此它可能是计算机病毒的目标。前四个字节必须是50 4b 03 04;我真的不明白为什么 WinRAR 和 WinZip 可以打开它们。尝试文件类型分析 - 可能是不同的存档格式和扩展名错误。 我在一些电脑上测试过。那你的?用7zip打开好吗?它以 50 4b 03 04(或 PK)开头?这是FF故意的吗?

以上是关于使用 MiniZip 库读取 omni.jar 存档文件的主要内容,如果未能解决你的问题,请参考以下文章

使用minizip解压缩多个文件(基于zlib)

Zlib和Minizip - 如何将新目录添加到.zip文件

免费的基于 C/C++ 的 zip/zip64 库?

geochunk1.minizip是啥文件

重复符号错误:带有 Objective-Zip、ZLib、MiniZip 的 Flurry SDK 5.0.0

添加 minizip 中断 Objective-C