Fix: windows x86_64 packaging behavior

This commit is contained in:
DaZuo0122
2026-02-13 17:11:22 +08:00
parent 77f4139392
commit 084506e84b
2 changed files with 27 additions and 1 deletions

View File

@@ -4,13 +4,21 @@
Current release package type: portable ZIP. Current release package type: portable ZIP.
Expected contents: Expected contents (Bevy package):
- `sprimo-app.exe` - `sprimo-app.exe`
- `assets/sprite-packs/default/manifest.json` - `assets/sprite-packs/default/manifest.json`
- `assets/sprite-packs/default/sprite.png` - `assets/sprite-packs/default/sprite.png`
- `README.txt` - `README.txt`
Expected contents (Tauri package):
- `sprimo-tauri.exe`
- `WebView2Loader.dll`
- `assets/sprite-packs/default/manifest.json`
- `assets/sprite-packs/default/sprite.png`
- `README.txt`
Generated outputs: Generated outputs:
- `dist/sprimo-windows-x64-v<version>.zip` - `dist/sprimo-windows-x64-v<version>.zip`

View File

@@ -32,6 +32,7 @@ class FrontendLayout:
binary_name: str binary_name: str
artifact_name: str artifact_name: str
readme_run: str readme_run: str
runtime_files: tuple[str, ...] = ()
FRONTENDS: dict[str, FrontendLayout] = { FRONTENDS: dict[str, FrontendLayout] = {
@@ -48,6 +49,7 @@ FRONTENDS: dict[str, FrontendLayout] = {
binary_name="sprimo-tauri.exe", binary_name="sprimo-tauri.exe",
artifact_name="sprimo-tauri-windows-x64", artifact_name="sprimo-tauri-windows-x64",
readme_run="sprimo-tauri.exe", readme_run="sprimo-tauri.exe",
runtime_files=("WebView2Loader.dll",),
), ),
} }
@@ -108,6 +110,18 @@ def ensure_release_binary(frontend: FrontendLayout) -> Path:
return binary_path return binary_path
def ensure_runtime_files(frontend: FrontendLayout, binary_dir: Path) -> list[Path]:
resolved: list[Path] = []
for filename in frontend.runtime_files:
path = binary_dir / filename
if not path.exists():
raise PackagingError(
f"required runtime file missing for {frontend.id}: {path}"
)
resolved.append(path)
return resolved
def ensure_assets() -> None: def ensure_assets() -> None:
required = [ required = [
ASSETS_REL / "sprite-packs" / "default" / "manifest.json", ASSETS_REL / "sprite-packs" / "default" / "manifest.json",
@@ -140,6 +154,7 @@ def package(frontend: FrontendLayout) -> PackageLayout:
version = read_version() version = read_version()
ensure_assets() ensure_assets()
binary = ensure_release_binary(frontend) binary = ensure_release_binary(frontend)
runtime_files = ensure_runtime_files(frontend, binary.parent)
DIST.mkdir(parents=True, exist_ok=True) DIST.mkdir(parents=True, exist_ok=True)
artifact_name = f"{frontend.artifact_name}-v{version}" artifact_name = f"{frontend.artifact_name}-v{version}"
@@ -151,6 +166,8 @@ def package(frontend: FrontendLayout) -> PackageLayout:
stage.mkdir(parents=True, exist_ok=True) stage.mkdir(parents=True, exist_ok=True)
shutil.copy2(binary, stage / frontend.binary_name) shutil.copy2(binary, stage / frontend.binary_name)
for runtime_file in runtime_files:
shutil.copy2(runtime_file, stage / runtime_file.name)
shutil.copytree(ASSETS_REL, stage / "assets", dirs_exist_ok=True) shutil.copytree(ASSETS_REL, stage / "assets", dirs_exist_ok=True)
readme = stage / "README.txt" readme = stage / "README.txt"
@@ -198,6 +215,7 @@ def smoke(frontend: FrontendLayout) -> None:
pkg_root / "assets" / "sprite-packs" / "default" / "manifest.json", pkg_root / "assets" / "sprite-packs" / "default" / "manifest.json",
pkg_root / "assets" / "sprite-packs" / "default" / "sprite.png", pkg_root / "assets" / "sprite-packs" / "default" / "sprite.png",
] ]
required.extend(pkg_root / filename for filename in frontend.runtime_files)
missing = [path for path in required if not path.exists()] missing = [path for path in required if not path.exists()]
if missing: if missing:
joined = ", ".join(str(path) for path in missing) joined = ", ".join(str(path) for path in missing)