$ErrorActionPreference = 'Stop' $projectDir = Split-Path -Parent $MyInvocation.MyCommand.Path $ffmpeg = Join-Path $projectDir 'ThirdParty\ffmpeg.exe' $ffprobe = Join-Path $projectDir 'ThirdParty\ffprobe.exe' $releaseExe = Join-Path $projectDir 'bin\Release\net8.0-windows\win-x64\AmiReel.exe' if (-not (Test-Path $ffmpeg) -or -not (Test-Path $ffprobe)) { throw 'Add ffmpeg.exe and ffprobe.exe to ThirdParty before publishing.' } if (Test-Path $releaseExe) { $runningReleaseInstances = Get-Process AmiReel -ErrorAction SilentlyContinue | Where-Object { $_.Path -and [string]::Equals($_.Path, $releaseExe, [System.StringComparison]::OrdinalIgnoreCase) } if ($runningReleaseInstances) { Write-Host 'Stopping running release build before publish...' -ForegroundColor Yellow $runningReleaseInstances | Stop-Process -Force Start-Sleep -Milliseconds 500 } } dotnet publish (Join-Path $projectDir 'AmigaDB.VideoRenderer.csproj') ` -c Release ` -r win-x64 ` --self-contained true ` -p:PublishSingleFile=true ` -p:IncludeNativeLibrariesForSelfExtract=true ` -p:EnableCompressionInSingleFile=true Write-Host 'Published to bin\Release\net8.0-windows\win-x64\publish' -ForegroundColor Green