仓库初始化
This commit is contained in:
@@ -0,0 +1,76 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
r"""
|
||||
本地测试包:与 scripts/package/pack_local_test.bat 相同流程,适合在 PowerShell / CI 中调用。
|
||||
不修改版本号,输出到 build\output_local\,不覆盖正式 build\output\。
|
||||
"""
|
||||
import os
|
||||
import shutil
|
||||
import subprocess
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
ROOT = Path(__file__).resolve().parents[2]
|
||||
OUTPUT_LOCAL_DIR = ROOT / "build" / "output_local"
|
||||
ISCC = os.environ.get(
|
||||
"INNO_SETUP_ISCC",
|
||||
r"C:\Program Files (x86)\Inno Setup 6\ISCC.exe",
|
||||
)
|
||||
|
||||
|
||||
def main() -> int:
|
||||
if any(arg in ("-h", "--help") for arg in sys.argv[1:]):
|
||||
print("用法: python scripts/package/pack_local_test.py")
|
||||
print("生成 build\\output_local\\ServerManager_Setup_LOCAL.exe,不修改正式 build\\output\\。")
|
||||
return 0
|
||||
|
||||
build_script = ROOT / "scripts" / "package" / "build.bat"
|
||||
if not build_script.exists():
|
||||
print("错误: 未找到 scripts\\package\\build.bat", file=sys.stderr)
|
||||
return 1
|
||||
if not Path(ISCC).is_file():
|
||||
print(f"错误: 未找到 Inno Setup 编译器: {ISCC}", file=sys.stderr)
|
||||
print("可设置环境变量 INNO_SETUP_ISCC 指向 ISCC.exe", file=sys.stderr)
|
||||
return 1
|
||||
|
||||
print("[1/3] PyInstaller: scripts\\package\\build.bat nopause ...")
|
||||
# Use cmd /d /c call ... so exit /b propagates.
|
||||
r = subprocess.run(
|
||||
["cmd.exe", "/d", "/c", "call", str(build_script), "nopause"],
|
||||
cwd=str(ROOT),
|
||||
shell=False,
|
||||
)
|
||||
if r.returncode != 0:
|
||||
print("[失败] PyInstaller 步骤退出码:", r.returncode, file=sys.stderr)
|
||||
return r.returncode
|
||||
|
||||
print("[2/3] Inno Setup: LOCAL_TEST -> build\\output_local\\ ...")
|
||||
r = subprocess.run(
|
||||
[ISCC, "/DLOCAL_TEST=1", str(ROOT / "scripts" / "package" / "build_installer.iss")],
|
||||
cwd=str(ROOT),
|
||||
)
|
||||
if r.returncode != 0:
|
||||
print("[失败] Inno Setup 退出码:", r.returncode, file=sys.stderr)
|
||||
return r.returncode
|
||||
|
||||
out_local = OUTPUT_LOCAL_DIR
|
||||
out_local.mkdir(parents=True, exist_ok=True)
|
||||
vj = ROOT / "resources" / "version.json"
|
||||
if vj.exists():
|
||||
shutil.copy2(vj, out_local / "version.json")
|
||||
print("[3/3] 已复制 version.json -> build\\output_local\\")
|
||||
|
||||
cleanup_script = ROOT / "scripts" / "package" / "clean_artifacts.py"
|
||||
if cleanup_script.exists():
|
||||
print("[cleanup] 删除打包中间产物 ...")
|
||||
subprocess.run([sys.executable, str(cleanup_script)], cwd=str(ROOT), check=False)
|
||||
|
||||
exe = out_local / "ServerManager_Setup_LOCAL.exe"
|
||||
print()
|
||||
print("本地测试包:", exe)
|
||||
print("验证通过后,再执行正式发版(scripts\\package\\release.bat / scripts\\package\\pack_all.bat + scripts\\package\\release.py)。")
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
sys.exit(main())
|
||||
Reference in New Issue
Block a user