- Версия 2.0.0, self-contained публикация под win/osx/linux - Установщик Inno перенастроен на Avalonia + брендовые картинки мастера (бирюзовый градиент, аптечный крест, ЭльФиСА) - exe переименовывается в «Электронная Фармация.exe» (совместимо с авто-обновлением) - Иконки приложения 256/512/1024 - Красивая страница загрузки web/download с авто-определением ОС (Win/Mac/Linux) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
60 lines
2.8 KiB
PowerShell
60 lines
2.8 KiB
PowerShell
#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"
|