做安装包版本
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import os
|
||||
import re
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
ROOT = Path(__file__).resolve().parents[1]
|
||||
APP_INFO = ROOT / "app_info.py"
|
||||
ISS_TEMPLATE = ROOT / "installer" / "niumasoftware.iss"
|
||||
ISS_OUT = ROOT / "installer" / "niumasoftware.generated.iss"
|
||||
|
||||
|
||||
def read_version() -> str:
|
||||
text = APP_INFO.read_text(encoding="utf-8")
|
||||
m = re.search(r"""__VERSION__\s*=\s*["']([^"']+)["']""", text)
|
||||
if not m:
|
||||
raise RuntimeError("未在 app_info.py 中找到 __VERSION__")
|
||||
return m.group(1).strip()
|
||||
|
||||
|
||||
def generate_iss(version: str) -> str:
|
||||
tpl = ISS_TEMPLATE.read_text(encoding="utf-8")
|
||||
if "{#AppVersion}" not in tpl:
|
||||
raise RuntimeError("niumasoftware.iss 未包含 {#AppVersion} 占位符")
|
||||
header = f'#define AppVersion "{version}"\n'
|
||||
# 如果模板里已经有 #define,则保留并在最前面插入(避免影响原结构)
|
||||
return header + tpl
|
||||
|
||||
|
||||
def main() -> int:
|
||||
version = read_version()
|
||||
out_text = generate_iss(version)
|
||||
ISS_OUT.write_text(out_text, encoding="utf-8", newline="\n")
|
||||
print(f"generated: {ISS_OUT}")
|
||||
print(f"version: {version}")
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
raise SystemExit(main())
|
||||
|
||||
Reference in New Issue
Block a user