软件推荐 › asar
asar
Nhấn hoặc quét mã QR để truy cập
Nhấn hoặc quét mã QR để truy cập
Nhấn hoặc quét mã QR để truy cập
软件介绍
asar文件格式
ASAR 全称是 Atom Shell Archive Format。asar 归档文件采用类似 tar 的简单格式,将众多文件合并为一个单一文件。Electron 能够在无需解压整个文件的情况下,从中随机读取特定文件。
创建 ASAR 格式的主要目的,是为了在 Windows 系统上提升读取众多小文件时的性能,例如在从 node_modules 中加载应用程序的 JavaScript 依赖时。
文件头部包含一个 JSON 格式的字符串,记录其中包含的文件结构以及所有文件的起始位置以及文件长度:
{
"files": {
"tmp": {
"files": {}
},
"usr" : {
"files": {
"bin": {
"files": {
"ls": {
"offset": "0",
"size": 100,
"executable": true,
"integrity": {
"algorithm": "SHA256",
"hash": "...",
"blockSize": 1024,
"blocks": ["...", "..."]
}
},
"cd": {
"offset": "100",
"size": 100,
"executable": true,
"integrity": {
"algorithm": "SHA256",
"hash": "...",
"blockSize": 1024,
"blocks": ["...", "..."]
}
}
}
}
}
},
"etc": {
"files": {
"hosts": {
"offset": "200",
"size": 32,
"integrity": {
"algorithm": "SHA256",
"hash": "...",
"blockSize": 1024,
"blocks": ["...", "..."]
}
}
}
}
}
}
offset 和 size 用于记录从存档文件中读取具体文件所需的信息。由于 offset 计数是从 0 开始,因此要获取文件的实际偏移量,需要手动将 header_size 和 header 的大小加到 offset 值上。
在这里,offset 用字符串格式表示的 UINT64 数字,因为 JavaScript 的 Number 类型无法精确表示 UINT64。而 size 则是一个不超过 Number.MAX_SAFE_INTEGER(即 9007199254740991,约合 8PB)的 JavaScript 数字。
integrity 是一个包含几个关键元素的对象:
- 一种哈希算法,目前仅支持 SHA256。
- 一个代表整个文件哈希的十六进制编码哈希值。
- 一个包含文件各个块的十六进制编码哈希值的数组。例如,如果 blockSize 设置为 4KB,那么这个数组将包含将文件分割成若干个 4KB 块后,每个块的哈希值。
- 一个整型值 blockSize,用来表示上述各块哈希中,每个块的字节大小。
asar文件解压
asar extract app.asar