mirror of
https://github.com/wwiinnddyy/LanMountainDesktop.git
synced 2026-06-20 15:44:25 +08:00
* 激进的更新 * 试试 * fix.可爱的我一直在修CI( * fix.启动器一定要能够启动 * feat.尝试弄了AOT的启动器。 * fix.修CI,好像是因为Linux那边有个问题,反正修就对了。 * fix.ci难修,为什么liunx跑不起来呢? * Update build.yml * Update LanMountainDesktop.csproj * changed.调整了启动逻辑,优化了更新页面。 * changed.优化了更新体验 * feat.依旧试增量更新这一块,看看velopack * fix.我们试验性地修复了启动器无法正常启动的问题,原因可能是这个画面没有启动,就GUI没显示。然后还把编译问题修了一下。 * fix.继续修ci,ci怎么天天炸 * changed.velopack,试试rust * fix.修ci,修融合桌面,修启动器 * fix.GitHub Action工作流怎么天天出问题 * feat.引入velopack,不好,是rust(至少内存很安全了。 * chore: migrate release pipeline to signed filemap and wire rainyun s3 * fix: make optional s3 upload step workflow-parse safe * fix: make delta pack generation robust for empty diffs and linux paths * chore: rotate launcher update public key for pdc signing * fix: restore stable launcher update public key * fix: sync launcher public key with update signing secret * fix: normalize PEM line endings in signing key validation * fix: rotate launcher public key to match ci signing secret * fix: compare signing keys by SPKI instead of PEM text * refactor update backend to host-managed PDC pipeline * fix release workflow env key collisions * relax publish-pdc precheck to require S3 only * set GH_TOKEN for PDCC installer step * ci: add local pdc mock fallback for release publish * ci: fix pdc mock process log redirection * ci: fallback pdcc signing key to update private key * ci: ensure pdcc signing passphrase env is always set * ci: create pdcc publish root before invoking client * ci: set pdcc version variable from release version * ci: decouple pdcc installer version from publish config version * ci: package pdcc subchannels with generated filemap and changelog * ci: make local pdc mock diff return empty for fast fallback * ci: fix pdcc variable mapping and pdc signing prechecks * Update App.axaml.cs * ci: wire aws cli credentials for rainyun s3 * ci: pin pdcc client version separately from app version * ci: harden local pdc mock transport handling * ci: publish pdcc subchannels in one pass * ci: add pdcc publish heartbeat and timeout * ci: fix pdcc publish workdir bootstrap * feat.Penguin Logistics Online Network Distribution System * ci: fix plonds s3 probe and signing fallback * ci: validate signing key and quiet missing baselines * ci: relax aws checksum mode for rainyun s3 * ci: avoid multipart uploads to rainyun s3 * ci: handle empty plonds baselines safely * ci.plonds * Rebuild release pipeline around PLONDS and DDSS * Fix Windows installer script path in release workflow
138 lines
4.3 KiB
PowerShell
138 lines
4.3 KiB
PowerShell
# Launcher AOT 单文件发布脚本
|
|
param(
|
|
[Parameter(Mandatory=$false)]
|
|
[string]$Configuration = "Release",
|
|
|
|
[Parameter(Mandatory=$false)]
|
|
[string]$RuntimeIdentifier = "win-x64",
|
|
|
|
[Parameter(Mandatory=$false)]
|
|
[string]$OutputDir = "",
|
|
|
|
[Parameter(Mandatory=$false)]
|
|
[switch]$SelfContained = $true,
|
|
|
|
[Parameter(Mandatory=$false)]
|
|
[switch]$SingleFile = $true,
|
|
|
|
[Parameter(Mandatory=$false)]
|
|
[switch]$Compress = $true
|
|
)
|
|
|
|
$ErrorActionPreference = "Stop"
|
|
|
|
# 设置默认输出目录
|
|
if ([string]::IsNullOrWhiteSpace($OutputDir)) {
|
|
$OutputDir = "..\publish\aot\$RuntimeIdentifier"
|
|
}
|
|
|
|
$projectPath = "..\LanMountainDesktop.Launcher\LanMountainDesktop.Launcher.csproj"
|
|
$absoluteOutputDir = Resolve-Path $OutputDir -ErrorAction SilentlyContinue
|
|
if (-not $absoluteOutputDir) {
|
|
$absoluteOutputDir = Join-Path (Get-Location) $OutputDir
|
|
}
|
|
|
|
Write-Host "========================================" -ForegroundColor Cyan
|
|
Write-Host " Launcher AOT 单文件发布" -ForegroundColor Cyan
|
|
Write-Host "========================================" -ForegroundColor Cyan
|
|
Write-Host ""
|
|
Write-Host "配置信息:" -ForegroundColor Yellow
|
|
Write-Host " 项目: $projectPath"
|
|
Write-Host " 配置: $Configuration"
|
|
Write-Host " 运行时: $RuntimeIdentifier"
|
|
Write-Host " 输出目录: $absoluteOutputDir"
|
|
Write-Host " 自包含: $SelfContained"
|
|
Write-Host " 单文件: $SingleFile"
|
|
Write-Host " 压缩: $Compress"
|
|
Write-Host ""
|
|
|
|
# 清理输出目录
|
|
if (Test-Path $absoluteOutputDir) {
|
|
Write-Host "清理旧输出目录..." -ForegroundColor Yellow
|
|
Remove-Item -Path $absoluteOutputDir -Recurse -Force
|
|
}
|
|
New-Item -ItemType Directory -Path $absoluteOutputDir -Force | Out-Null
|
|
|
|
# 构建发布参数
|
|
$publishArgs = @(
|
|
"publish",
|
|
$projectPath,
|
|
"-c", $Configuration,
|
|
"-r", $RuntimeIdentifier,
|
|
"-o", $absoluteOutputDir,
|
|
"-p:PublishAot=true",
|
|
"-p:PublishTrimmed=true",
|
|
"-p:TrimMode=partial"
|
|
)
|
|
|
|
if ($SelfContained) {
|
|
$publishArgs += "--self-contained"
|
|
}
|
|
|
|
if ($SingleFile) {
|
|
$publishArgs += "-p:PublishSingleFile=true"
|
|
$publishArgs += "-p:IncludeNativeLibrariesForSelfExtract=true"
|
|
}
|
|
|
|
if ($Compress) {
|
|
$publishArgs += "-p:EnableCompressionInSingleFile=true"
|
|
}
|
|
|
|
Write-Host "开始发布..." -ForegroundColor Green
|
|
Write-Host "命令: dotnet $([string]::Join(' ', $publishArgs))" -ForegroundColor Gray
|
|
Write-Host ""
|
|
|
|
try {
|
|
& dotnet @publishArgs
|
|
|
|
if ($LASTEXITCODE -ne 0) {
|
|
throw "发布失败,退出代码: $LASTEXITCODE"
|
|
}
|
|
|
|
Write-Host ""
|
|
Write-Host "========================================" -ForegroundColor Green
|
|
Write-Host " 发布成功!" -ForegroundColor Green
|
|
Write-Host "========================================" -ForegroundColor Green
|
|
Write-Host ""
|
|
|
|
# 显示输出文件
|
|
$outputFiles = Get-ChildItem -Path $absoluteOutputDir -File
|
|
Write-Host "输出文件:" -ForegroundColor Yellow
|
|
foreach ($file in $outputFiles) {
|
|
$size = if ($file.Length -gt 1MB) {
|
|
"{0:N2} MB" -f ($file.Length / 1MB)
|
|
} else {
|
|
"{0:N2} KB" -f ($file.Length / 1KB)
|
|
}
|
|
Write-Host " $($file.Name) - $size"
|
|
}
|
|
|
|
# 验证单文件
|
|
$exeFile = Get-ChildItem -Path $absoluteOutputDir -Filter "*.exe" | Select-Object -First 1
|
|
if ($exeFile) {
|
|
Write-Host ""
|
|
Write-Host "可执行文件: $($exeFile.FullName)" -ForegroundColor Green
|
|
|
|
# 检查是否为单文件
|
|
if ($SingleFile -and $outputFiles.Count -eq 1) {
|
|
Write-Host "✓ 单文件发布成功!" -ForegroundColor Green
|
|
} elseif ($SingleFile) {
|
|
Write-Host "⚠ 警告: 发现 $($outputFiles.Count) 个文件,可能不是完全的单文件" -ForegroundColor Yellow
|
|
}
|
|
}
|
|
|
|
Write-Host ""
|
|
Write-Host "使用说明:" -ForegroundColor Cyan
|
|
Write-Host " 1. 将 $($exeFile.Name) 复制到目标机器"
|
|
Write-Host " 2. 确保目录结构包含 app-* 文件夹"
|
|
Write-Host " 3. 直接运行即可,无需安装 .NET Runtime"
|
|
|
|
} catch {
|
|
Write-Host ""
|
|
Write-Host "========================================" -ForegroundColor Red
|
|
Write-Host " 发布失败!" -ForegroundColor Red
|
|
Write-Host "========================================" -ForegroundColor Red
|
|
Write-Host "错误: $_" -ForegroundColor Red
|
|
exit 1
|
|
}
|