我有一个脚本来提取.exe文件的所有内容,但是
register_archive_format
和
register_unpack_format
函数似乎不像预期的那样工作。以下是我的脚本的简短版本:
import os
import re
import py7zr
import wget
import shutil
import zipfile
versions = ["1.10", "2.0", "2.1pre"]
shutil.register_archive_format('exe', py7zr.pack_7zarchive, description="exe archive")
shutil.register_unpack_format('exe', ['.exe'], py7zr.unpack_7zarchive)
print("Supported formats:")
formats = shutil.get_unpack_formats()
print(formats, "\n")
with py7zr.SevenZipFile(f"C:/Users/Me/Documents/Builds/{version}/{filePath}", 'r') as zip_ref:
folderName = re.search("^([^_]+)(-installer)([^.]*)", fileNameOnly)
folderName = folderName[1] + folderName[3]
#zip_ref.extractall(f"C:/Users/Me/Documents/Builds/{version}/{folderName}")
shutil.unpack_archive(zip_ref, f"C:/Users/Me/Documents/Builds/{version}/{folderName}")
代码从
shutil.get_unpack_formats()
并且似乎正确地显示了注册的exe文件。但是当密码到达
shutil.unpack_archive()
它抛出的函数
py7zr.exceptions.Bad7zFile: not a 7z file
是否缺少从exe文件中提取的步骤?我知道我可以从exe文件中提取,就像通过exe文件的上下文菜单手动提取一样。