Files
DevFlow/scripts/package-devflow.ps1
T
lxy 8e1e56b3e5 优化: 打包提速与换装脚本
- Cargo.toml release profile 开 incremental(小改动重打包显著提速,正式发版在意体积可临时注释)
- 新增 scripts/package-devflow.ps1 双通道打包脚本:verify 快速编译验证/full 全量发版换装,含磁盘预检与启动验证
2026-10-05 00:35:05 +08:00

63 lines
2.5 KiB
PowerShell

# 用途: devflow 打包换装双通道脚本(verify=快速编译验证 / full=全量发版换装)
# 生命周期: 长期保留(挂机模式打包组件的雏形,接力棒 M1 落地后由其接管安装段)
# 用法: .\scripts\package-devflow.ps1 -Mode verify # 只验 release 编译,分钟级
# .\scripts\package-devflow.ps1 -Mode full # tauri build -> 杀进程 -> /S 静默装 -> 启动验证
param(
[ValidateSet("verify", "full")]
[string]$Mode = "verify"
)
$ErrorActionPreference = "Continue"
$repo = "E:\wk-lab\devflow"
$exe = "$env:LOCALAPPDATA\devflow\devflow.exe"
$minFreeGB = 10
Set-Location $repo
function Get-FreeGB($path) {
$drive = (Get-Item $path).PSDrive
return [math]::Round($drive.Free / 1GB, 1)
}
$free = Get-FreeGB $repo
if ($free -lt $minFreeGB) {
Write-Host "[预检失败] E 盘剩余 ${free}GB < ${minFreeGB}GB,先清 target\debug\incremental(历史教训 os error 112)"
exit 1
}
Write-Host "[预检] E 盘剩余 ${free}GB,通过"
if ($Mode -eq "verify") {
Write-Host "== 通道1: 快速编译验证(cargo build --release,不打安装包) =="
cmd /c "cargo build --release 2>&1"
if ($LASTEXITCODE -ne 0) { Write-Host "[失败] 编译未过"; exit 1 }
Write-Host "[通过] release 编译成功(未打安装包)"
exit 0
}
Write-Host "== 通道2: 全量发版换装(tauri build -> 静默安装 -> 启动验证) =="
Write-Host "[1/4] tauri build(可能 10 分钟级)..."
cmd /c "cargo tauri build 2>&1"
if ($LASTEXITCODE -ne 0) { Write-Host "[失败] tauri build"; exit 1 }
$bundle = Get-ChildItem "$repo\target\release\bundle\nsis\*.exe" | Sort-Object LastWriteTime -Descending | Select-Object -First 1
if (-not $bundle) { Write-Host "[失败] 未找到安装包产物"; exit 1 }
Write-Host "[2/4] 安装包: $($bundle.Name) ($([math]::Round($bundle.Length/1MB,1))MB, $($bundle.LastWriteTime))"
Write-Host "[3/4] 杀旧进程 -> 静默安装..."
Get-Process devflow -ErrorAction SilentlyContinue | Stop-Process -Force
Start-Sleep -Seconds 2
Start-Process $bundle.FullName -ArgumentList "/S" -Wait
if (-not (Test-Path $exe)) { Write-Host "[失败] 安装后未找到 $exe"; exit 1 }
$exeTime = (Get-Item $exe).LastWriteTime
Write-Host "[4/4] 启动验证(装机 exe 时间: $exeTime)..."
Start-Process $exe
Start-Sleep -Seconds 6
$proc = Get-Process devflow -ErrorAction SilentlyContinue
if ($proc) {
Write-Host "[换装成功] PID $($proc.Id) 存活,装机时间 $exeTime"
} else {
Write-Host "[警告] 启动后 6 秒未见进程,请人工确认(可能仍在初始化)"
exit 1
}