Initial commit
This commit is contained in:
@@ -0,0 +1,87 @@
|
||||
|
||||
[CmdletBinding()]
|
||||
param(
|
||||
[string]$Version,
|
||||
[switch]$SkipFlutterBuild
|
||||
)
|
||||
|
||||
$ErrorActionPreference = 'Stop'
|
||||
|
||||
$ProjectRoot = Split-Path -Parent $PSScriptRoot
|
||||
Set-Location $ProjectRoot
|
||||
. (Join-Path $PSScriptRoot 'version-common.ps1')
|
||||
Write-Host "==> Project root: $ProjectRoot" -ForegroundColor Cyan
|
||||
|
||||
if (-not $Version) {
|
||||
$Version = Get-SmPlayerCurrentVersion -Platform windows -ProjectRoot $ProjectRoot
|
||||
}
|
||||
Write-Host "==> Version: $Version" -ForegroundColor Cyan
|
||||
|
||||
$IsccCandidates = @(
|
||||
"$Env:ProgramFiles\Inno Setup 6\ISCC.exe",
|
||||
"${Env:ProgramFiles(x86)}\Inno Setup 6\ISCC.exe",
|
||||
"$Env:LOCALAPPDATA\Programs\Inno Setup 6\ISCC.exe",
|
||||
"$Env:ProgramFiles\Inno Setup 5\ISCC.exe",
|
||||
"${Env:ProgramFiles(x86)}\Inno Setup 5\ISCC.exe",
|
||||
"$Env:LOCALAPPDATA\Programs\Inno Setup 5\ISCC.exe"
|
||||
)
|
||||
$Iscc = $IsccCandidates | Where-Object { Test-Path $_ } | Select-Object -First 1
|
||||
if (-not $Iscc) {
|
||||
$cmd = Get-Command iscc.exe -ErrorAction SilentlyContinue
|
||||
if ($cmd) { $Iscc = $cmd.Source }
|
||||
}
|
||||
if (-not $Iscc) {
|
||||
Write-Host ""
|
||||
Write-Host "[X] ISCC.exe not found." -ForegroundColor Red
|
||||
Write-Host " Install: https://jrsoftware.org/isdl.php" -ForegroundColor Yellow
|
||||
Write-Host " Or: winget install -e --id JRSoftware.InnoSetup" -ForegroundColor Yellow
|
||||
exit 1
|
||||
}
|
||||
Write-Host "==> ISCC: $Iscc" -ForegroundColor Cyan
|
||||
|
||||
if (-not $SkipFlutterBuild) {
|
||||
Write-Host '==> flutter pub get' -ForegroundColor Cyan
|
||||
& flutter pub get
|
||||
if ($LASTEXITCODE -ne 0) { throw "flutter pub get failed (exit $LASTEXITCODE)" }
|
||||
|
||||
$prepareFvpScript = Join-Path $PSScriptRoot 'prepare-fvp-windows-deps.ps1'
|
||||
& powershell -ExecutionPolicy Bypass -File $prepareFvpScript
|
||||
if ($LASTEXITCODE -ne 0) {
|
||||
throw "Failed to prepare pinned fvp Windows dependencies (exit $LASTEXITCODE)"
|
||||
}
|
||||
|
||||
$flutterBuildArgs = @('build', 'windows', '--release', '--build-name', $Version)
|
||||
$flutterBuildArgs = Add-SmPlayerVersionDartDefine -Arguments $flutterBuildArgs -Version $Version
|
||||
|
||||
Write-Host "==> flutter $($flutterBuildArgs -join ' ')" -ForegroundColor Cyan
|
||||
$Env:FVP_DEPS_LATEST = $null
|
||||
& flutter @flutterBuildArgs
|
||||
if ($LASTEXITCODE -ne 0) { throw "flutter build failed (exit $LASTEXITCODE)" }
|
||||
} else {
|
||||
Write-Host "==> Skipping flutter build (--SkipFlutterBuild)" -ForegroundColor Yellow
|
||||
}
|
||||
|
||||
$ReleaseDir = Join-Path $ProjectRoot "build\windows\x64\runner\Release"
|
||||
$Exe = Join-Path $ReleaseDir "smplayer.exe"
|
||||
if (-not (Test-Path $Exe)) {
|
||||
throw "Build artifact not found: $Exe (re-run without -SkipFlutterBuild)"
|
||||
}
|
||||
|
||||
$Iss = Join-Path $ProjectRoot "installer\sm_emby.iss"
|
||||
$OutputDir = Join-Path $ProjectRoot "build\installer"
|
||||
New-Item -ItemType Directory -Force -Path $OutputDir | Out-Null
|
||||
|
||||
Write-Host "==> Building installer" -ForegroundColor Cyan
|
||||
& $Iscc "/DAppVersion=$Version" $Iss
|
||||
if ($LASTEXITCODE -ne 0) { throw "ISCC failed (exit $LASTEXITCODE)" }
|
||||
|
||||
$Setup = Join-Path $OutputDir "smplayer-setup-$Version-x64.exe"
|
||||
if (Test-Path $Setup) {
|
||||
$size = (Get-Item $Setup).Length / 1MB
|
||||
Write-Host ""
|
||||
Write-Host "[OK] Installer generated:" -ForegroundColor Green
|
||||
Write-Host " $Setup" -ForegroundColor Green
|
||||
Write-Host (" Size: {0:N2} MB" -f $size) -ForegroundColor Green
|
||||
} else {
|
||||
Write-Host "[!] Expected artifact missing, check $OutputDir" -ForegroundColor Yellow
|
||||
}
|
||||
Reference in New Issue
Block a user