ci: build Windows release package
Some checks failed
Build Windows Release / build-windows (push) Has been cancelled
Some checks failed
Build Windows Release / build-windows (push) Has been cancelled
This commit is contained in:
59
scripts/package-windows-release.ps1
Normal file
59
scripts/package-windows-release.ps1
Normal file
@@ -0,0 +1,59 @@
|
||||
param(
|
||||
[ValidateSet("msvc")]
|
||||
[string]$Toolchain = "msvc",
|
||||
[string]$BuildDir = "$PSScriptRoot\..\build-windows",
|
||||
[string]$DistDir = "$PSScriptRoot\..\dist-windows"
|
||||
)
|
||||
|
||||
$ErrorActionPreference = "Stop"
|
||||
|
||||
$ProjectRoot = Resolve-Path "$PSScriptRoot\.."
|
||||
$BuildDir = [System.IO.Path]::GetFullPath($BuildDir)
|
||||
$DistDir = [System.IO.Path]::GetFullPath($DistDir)
|
||||
$PackageName = "chengnan-windows-x86_64"
|
||||
$PackageDir = Join-Path $DistDir $PackageName
|
||||
$ZipPath = Join-Path $DistDir "$PackageName.zip"
|
||||
$HashPath = "$ZipPath.sha256"
|
||||
|
||||
Write-Host "[package] ProjectRoot: $ProjectRoot"
|
||||
Write-Host "[package] BuildDir: $BuildDir"
|
||||
Write-Host "[package] DistDir: $DistDir"
|
||||
|
||||
& "$ProjectRoot\docs\windows\build-windows.ps1" -Toolchain $Toolchain -BuildDir $BuildDir -Deploy
|
||||
|
||||
$DeployDir = Join-Path $BuildDir "deploy"
|
||||
$Exe = Join-Path $DeployDir "chengnan.exe"
|
||||
if (!(Test-Path $Exe)) {
|
||||
throw "未找到部署后的 Windows 可执行文件:$Exe"
|
||||
}
|
||||
|
||||
if (Test-Path $PackageDir) { Remove-Item -Recurse -Force $PackageDir }
|
||||
if (Test-Path $ZipPath) { Remove-Item -Force $ZipPath }
|
||||
if (Test-Path $HashPath) { Remove-Item -Force $HashPath }
|
||||
New-Item -ItemType Directory -Force -Path $DistDir | Out-Null
|
||||
Copy-Item -Recurse -Force $DeployDir $PackageDir
|
||||
|
||||
$ReadmePath = Join-Path $PackageDir "README.txt"
|
||||
@"
|
||||
chengnan Windows x86_64 发布包
|
||||
|
||||
运行方式:
|
||||
1. 解压整个目录。
|
||||
2. 双击 chengnan.exe 运行。
|
||||
|
||||
说明:
|
||||
- 本目录已包含 Qt 运行时和 OpenCV DLL。
|
||||
- 请不要只复制 chengnan.exe,需保留同目录 DLL 和 Qt plugins 子目录。
|
||||
"@ | Set-Content -Encoding UTF8 $ReadmePath
|
||||
|
||||
Compress-Archive -Path (Join-Path $PackageDir "*") -DestinationPath $ZipPath -Force
|
||||
|
||||
$Hash = Get-FileHash -Algorithm SHA256 $ZipPath
|
||||
"$($Hash.Hash.ToLower()) $(Split-Path -Leaf $ZipPath)" | Set-Content -Encoding ASCII $HashPath
|
||||
|
||||
if (!(Test-Path $ZipPath) -or ((Get-Item $ZipPath).Length -le 0)) {
|
||||
throw "发布包生成失败:$ZipPath"
|
||||
}
|
||||
|
||||
Write-Host "[package] 发布包:$ZipPath"
|
||||
Write-Host "[package] 校验文件:$HashPath"
|
||||
Reference in New Issue
Block a user