#archive #applications #write #read #file #read-write #integrity

bin+lib asar

用于读取和写入 asar 归档的 crate,常用于 Electron 应用程序

3 个版本 (破坏性)

0.3.0 2023年11月24日
0.2.0 2023年1月11日
0.1.0 2022年7月30日
0.0.0 2021年1月5日

#164 in 压缩

每月下载 35 次
用于 electron_tasje

Apache-2.0 OR MIT

55KB
1K SLoC

asar

此 crate 允许解析、读取和写入 asar 归档,通常在基于 Electron 的应用程序中看到。

示例

列出 asar 归档的内容

use asar::{AsarReader, Header, Result};
use std::fs;

fn main() -> Result<()> {
	let asar_file = fs::read("archive.asar")?;
	let asar = AsarReader::new(&asar_file)?;

	println!("There are {} files in archive.asar", asar.files().len());
	for path in asar.files().keys() {
		println!("{}", path.display());
	}
	Ok(())
}

从 asar 归档中读取文件

use asar::{AsarReader, Header, Result};
use std::{fs, path::PathBuf};

fn main() -> Result<()> {
	let asar_file = fs::read("archive.asar")?;
	let asar = AsarReader::new(&asar_file)?;

	let path = PathBuf::from("hello.txt");
	let file = asar.files().get(&path).unwrap();
	let contents = std::str::from_utf8(file.data()).unwrap();
	assert_eq!(contents, "Hello, World!");
	Ok(())
}

向 asar 归档中写入文件

use asar::{AsarWriter, Result};
use std::fs::File;

fn main() -> Result<()> {
	let mut asar = AsarWriter::new();
	asar.write_file("hello.txt", b"Hello, World!", false)?;
	asar.finalize(File::create("archive.asar")?)?;
	Ok(())
}

功能

  • integrity:启用完整性检查/计算。
  • check-integrity-on-read:在读取归档时启用完整性检查,如果任何完整性检查失败则失败。
  • write - 启用写入 asar 归档。 默认启用,也启用 integrity

许可证

asar 根据 MIT 许可证Apache 许可证 2.0 许可,由用户选择。

许可证:Apache-2.0 OR MIT

修正

我,@Absolucy,完全允许在任何地方使用我的代码(包括整个项目 asar-rs),无论许可证如何,用于训练旨在用于通用编程或代码分析的机器学习模型。

依赖关系

~10–21MB
~284K SLoC