初始化奇妙小屏幕控制器项目
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
param(
|
||||
[string]$Python = "python",
|
||||
[string]$BuildEnvironment = ""
|
||||
)
|
||||
|
||||
$ErrorActionPreference = "Stop"
|
||||
$sourceRoot = Split-Path -Parent $MyInvocation.MyCommand.Path
|
||||
$buildRoot = Join-Path $sourceRoot ".build"
|
||||
$programRoot = [System.IO.Path]::GetFullPath((Join-Path $sourceRoot "..\编辑器程序"))
|
||||
|
||||
if ($BuildEnvironment) {
|
||||
$pythonExe = [System.IO.Path]::GetFullPath((Join-Path $BuildEnvironment "Scripts\python.exe"))
|
||||
if (-not (Test-Path -LiteralPath $pythonExe)) {
|
||||
throw "指定的构建环境不存在:$BuildEnvironment"
|
||||
}
|
||||
} else {
|
||||
$venvRoot = Join-Path $sourceRoot ".build-venv"
|
||||
$pythonExe = Join-Path $venvRoot "Scripts\python.exe"
|
||||
if (-not (Test-Path -LiteralPath $pythonExe)) {
|
||||
& $Python -m venv $venvRoot
|
||||
}
|
||||
& $pythonExe -m pip install --disable-pip-version-check --requirement (Join-Path $sourceRoot "requirements-build.txt")
|
||||
}
|
||||
|
||||
& $pythonExe -c "import PyInstaller, PySide6; assert PyInstaller.__version__ == '6.22.2'; assert PySide6.__version__ == '6.11.2'"
|
||||
if ($LASTEXITCODE -ne 0) { throw "构建依赖版本校验失败" }
|
||||
|
||||
$env:PYTHONPATH = Join-Path $sourceRoot "src"
|
||||
& $pythonExe -m unittest discover -s (Join-Path $sourceRoot "tests") -v
|
||||
if ($LASTEXITCODE -ne 0) { throw "镜像编辑器单元测试失败" }
|
||||
|
||||
New-Item -ItemType Directory -Path $buildRoot -Force | Out-Null
|
||||
$distRoot = Join-Path $buildRoot "dist"
|
||||
$workRoot = Join-Path $buildRoot "work"
|
||||
$specRoot = Join-Path $buildRoot "spec"
|
||||
New-Item -ItemType Directory -Path $distRoot,$workRoot,$specRoot -Force | Out-Null
|
||||
|
||||
$originalPath = $env:PATH
|
||||
try {
|
||||
# Avoid collecting unrelated DLLs from the caller's PATH (for example another app's ICU build).
|
||||
$env:PATH = "$env:SystemRoot\System32;$env:SystemRoot"
|
||||
& $pythonExe -m PyInstaller `
|
||||
--noconfirm `
|
||||
--clean `
|
||||
--onefile `
|
||||
--console `
|
||||
--hide-console=hide-early `
|
||||
--name "核桃派镜像配置编辑器" `
|
||||
--version-file (Join-Path $sourceRoot "windows_version_info.txt") `
|
||||
--paths (Join-Path $sourceRoot "src") `
|
||||
--distpath $distRoot `
|
||||
--workpath $workRoot `
|
||||
--specpath $specRoot `
|
||||
(Join-Path $sourceRoot "editor_main.py")
|
||||
if ($LASTEXITCODE -ne 0) { throw "PyInstaller 构建失败" }
|
||||
} finally {
|
||||
$env:PATH = $originalPath
|
||||
}
|
||||
|
||||
$artifact = Join-Path $distRoot "核桃派镜像配置编辑器.exe"
|
||||
if (-not (Test-Path -LiteralPath $artifact)) {
|
||||
throw "PyInstaller 未生成目标 EXE"
|
||||
}
|
||||
New-Item -ItemType Directory -Path $programRoot -Force | Out-Null
|
||||
Copy-Item -LiteralPath $artifact -Destination (Join-Path $programRoot "核桃派镜像配置编辑器.exe") -Force
|
||||
[System.IO.File]::WriteAllText((Join-Path $programRoot "VERSION"), "2.0.0`n", [System.Text.UTF8Encoding]::new($false))
|
||||
$hash = (Get-FileHash -LiteralPath (Join-Path $programRoot "核桃派镜像配置编辑器.exe") -Algorithm SHA256).Hash.ToLowerInvariant()
|
||||
[System.IO.File]::WriteAllText((Join-Path $programRoot "SHA256SUMS"), "$hash 核桃派镜像配置编辑器.exe`n", [System.Text.UTF8Encoding]::new($false))
|
||||
Write-Output "已生成:$programRoot"
|
||||
Reference in New Issue
Block a user