什么是 blockmap 文件?
blockmap 文件是一种用于描述文件内容块(blocks)结构和校验信息的元数据文件。
它通常用于软件更新系统中,特别是支持“增量更新”或“差分升级”的场景,
比如 Electron 应用通过 electron-updater 实现的自动更新机制。
blockmap 的主要作用
blockmap 文件的核心作用是让客户端能够只下载新旧版本之间的差异部分, 而不是整个新安装包,从而节省带宽、加快更新速度并提升用户体验。
具体来说,blockmap 记录了:
- 原始文件被分割成多个固定大小的数据块(例如 4KB);
- 每个数据块的 SHA256 或 SHA512 校验值;
- 数据块在文件中的偏移位置和长度。
典型应用场景
在使用 Squirrel(Windows)或 AppImage(Linux)等更新框架的 Electron 应用中, 发布新版本时会自动生成 .exe(或 .AppImage)文件及其对应的 .blockmap 文件。 当用户启动应用检查更新时,客户端会下载新版本的 blockmap, 并与本地旧版本的 blockmap 对比,仅请求发生变化的数据块。
如何生成 blockmap?
开发者通常不需要手动创建 blockmap。使用如 electron-builder 这类打包工具,
在配置好发布选项后,构建过程会自动为输出的安装包生成对应的 .blockmap 文件。
安全与验证
blockmap 文件本身也常附带数字签名或通过 HTTPS 传输,以防止中间人篡改。 客户端在应用增量更新前,会校验每个数据块的哈希值,确保完整性。