#Requires -Version 5.1 param([switch]$SkipBuild) $ErrorActionPreference = "Stop" $root = Resolve-Path (Join-Path $PSScriptRoot "..") Set-Location $root Write-Host "Root: $root" -ForegroundColor Cyan $iscc = @( "$env:LocalAppData\Programs\Inno Setup 6\ISCC.exe", "${env:ProgramFiles(x86)}\Inno Setup 6\ISCC.exe", "${env:ProgramFiles}\Inno Setup 6\ISCC.exe" ) | Where-Object { Test-Path $_ } | Select-Object -First 1 if (-not $iscc) { throw "Inno Setup 6 (ISCC.exe) не найден. Установите: winget install JRSoftware.InnoSetup" } $pub = "publish\win-x64" if (-not $SkipBuild) { Write-Host "Публикация Avalonia (win-x64, self-contained)..." -ForegroundColor Cyan if (Test-Path $pub) { Remove-Item $pub -Recurse -Force } dotnet publish "src\Elfisa.Avalonia\Elfisa.Avalonia.csproj" -c Release -r win-x64 ` --self-contained true -p:PublishSingleFile=false -p:DebugType=none -o $pub if ($LASTEXITCODE -ne 0) { throw "Публикация приложения завершилась с ошибкой" } } # Имя exe, совместимое с авто-обновлением старых WinForms-клиентов # (батч-апдейтер перезапускает файл по имени «Электронная Фармация.exe»). # apphost находит свой .dll независимо от имени exe, поэтому переименование безопасно. $srcExe = Join-Path $pub "Elfisa.Avalonia.exe" $dstExe = Join-Path $pub "Электронная Фармация.exe" if (Test-Path $srcExe) { Move-Item $srcExe $dstExe -Force } elseif (-not (Test-Path $dstExe)) { throw "Не найден собранный exe в $pub" } Write-Host "Сборка установщика..." -ForegroundColor Cyan & $iscc "installer\ElfisaPharmacy.iss" if ($LASTEXITCODE -ne 0) { throw "Inno Setup завершился с ошибкой" } $out = Get-ChildItem "installer\output\ElfisaPharmacy-Setup-*.exe" | Where-Object { $_.Name -notmatch '\.bak\.' -and $_.Name -ne 'ElfisaPharmacy-Setup.exe' } | Sort-Object LastWriteTime -Descending | Select-Object -First 1 if (-not $out) { throw "Не найден собранный Setup exe в installer\output" } # Стабильное имя для CDN: https://cdn.24pharmdata.ru/ElfisaPharmacy-Setup.exe $stable = Join-Path $out.DirectoryName "ElfisaPharmacy-Setup.exe" Copy-Item $out.FullName $stable -Force Write-Host "" Write-Host "Готово: $($out.FullName)" -ForegroundColor Green Write-Host "CDN-файл: $stable" -ForegroundColor Green Write-Host ("Размер: {0:N1} МБ" -f ($out.Length / 1MB)) Write-Host "" Write-Host "Залейте на CDN:" -ForegroundColor Cyan Write-Host " https://cdn.24pharmdata.ru/ <- корень отдаёт этот Setup" Write-Host " или файл: ElfisaPharmacy-Setup.exe"