create_sfx.py 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. # 使用 Python 拼接二进制文件创建 SFX 自解压 exe
  2. import os
  3. import sys
  4. # 文件路径
  5. SFX_MODULE = r"C:\Program Files\2345Soft\HaoZip\sfx\HaoZip7zSetup.sfx"
  6. ZIP_FILE = "SteamSH.zip"
  7. OUTPUT_FILE = "SteamSH_Dist.exe"
  8. def create_sfx():
  9. if not os.path.exists(ZIP_FILE):
  10. print(f"错误: 找不到 {ZIP_FILE}")
  11. return False
  12. if not os.path.exists(SFX_MODULE):
  13. print(f"错误: 找不到 SFX 模块 {SFX_MODULE}")
  14. print("提示: 请安装 7-Zip 或 2345好压")
  15. return False
  16. try:
  17. # 读取 SFX 模块
  18. print(f"读取 SFX 模块: {SFX_MODULE}")
  19. with open(SFX_MODULE, 'rb') as f:
  20. sfx_data = f.read()
  21. print(f" SFX 模块大小: {len(sfx_data):,} bytes")
  22. # 读取 zip 文件
  23. print(f"读取压缩包: {ZIP_FILE}")
  24. with open(ZIP_FILE, 'rb') as f:
  25. zip_data = f.read()
  26. print(f" 压缩包大小: {len(zip_data):,} bytes")
  27. # 拼接
  28. print(f"创建自解压文件: {OUTPUT_FILE}")
  29. with open(OUTPUT_FILE, 'wb') as f:
  30. f.write(sfx_data)
  31. f.write(zip_data)
  32. # 输出信息
  33. output_size = os.path.getsize(OUTPUT_FILE)
  34. print(f"\n成功! 输出文件: {OUTPUT_FILE}")
  35. print(f"文件大小: {output_size / 1024 / 1024:.2f} MB")
  36. print(f"\n使用方法:")
  37. print(f" 直接分发 {OUTPUT_FILE} 给用户")
  38. print(f" 用户双击即可自动解压并启动两个程序")
  39. return True
  40. except Exception as e:
  41. print(f"错误: {e}")
  42. return False
  43. if __name__ == "__main__":
  44. os.chdir(os.path.dirname(os.path.abspath(__file__)))
  45. create_sfx()