def _extract_header(nsis_file, firstheader):
inflated_data, data_size = inflate_header(nsis_file, firstheader.data_offset)
header = Header._make(_header_pack.unpack_from(inflated_data))
firstheader.header = header
firstheader._raw_header = bytes(inflated_data)
firstheader._raw_header_c_size = data_size
# Parse the block headers.
block_headers = []
for i in range(BLOCKS_COUNT):
header_offset = i * _blockheader_pack.size
block_header = BlockHeader._make(_blockheader_pack.unpack_from(
header.raw_blocks[header_offset:]))
block_headers.append(block_header)
header.blocks = block_headers
# Parse the install types.
header.install_types = [
struct.unpack_from('<I', header.raw_install_types[i:])[0]
for i in range(0, len(header.raw_install_types), 4)]
return header
评论列表
文章目录