Files
imajviewer/build-windows.ps1
Alhan 88500ab800
Some checks failed
Build & Release / build-linux (push) Has been cancelled
Build & Release / build-windows (push) Has been cancelled
Build & Release / create-release (push) Has been cancelled
feat: Windows development tooling — build, install, uninstall scripts + setup guide
- build-windows.ps1: one-command Flutter build + Inno Setup installer pipeline
- install.ps1: manual Windows installer (registry, shortcuts, file associations)
- uninstall.ps1: clean removal script
- docs/windows-setup.md: Windows dev environment setup guide
- docs/index.md: updated with new files
2026-08-10 23:32:08 +03:00

166 lines
6.1 KiB
PowerShell
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#Requires -Version 5.1
<#
.SYNOPSIS
ImajViewer Windows Build & Installer Pipeline
.DESCRIPTION
Tek komutla Flutter Windows build + Inno Setup installer olusturur.
Sirali olarak:
1. flutter pub get
2. flutter build windows --release
3. Inno Setup ile .exe installer olusturma
.PARAMETER Configuration
Build konfigurasyonu: 'Release' (varsayilan) veya 'Debug'
.PARAMETER SkipInno
Inno Setup adimini atlar (sadece Flutter build yapar)
.PARAMETER Clean
Build oncesi 'flutter clean' calistirir
.EXAMPLE
.\build-windows.ps1
.\build-windows.ps1 -Configuration Debug
.\build-windows.ps1 -SkipInno
.\build-windows.ps1 -Clean -Configuration Release
#>
param(
[ValidateSet('Release', 'Debug')]
[string]$Configuration = 'Release',
[switch]$SkipInno,
[switch]$Clean
)
# Renkli cikti
function Write-Step { param([string]$Msg) Write-Host "`n>> $Msg" -ForegroundColor Cyan }
function Write-Ok { param([string]$Msg) Write-Host " [OK] $Msg" -ForegroundColor Green }
function Write-Err { param([string]$Msg) Write-Host " [X] $Msg" -ForegroundColor Red; exit 1 }
function Write-Warn { param([string]$Msg) Write-Host " [!] $Msg" -ForegroundColor Yellow }
$ErrorActionPreference = 'Stop'
$ProjectRoot = Split-Path -Parent $MyInvocation.MyCommand.Path
Write-Host "=" * 60 -ForegroundColor White
Write-Host " ImajViewer Windows Build Pipeline" -ForegroundColor White
Write-Host "=" * 60 -ForegroundColor White
Write-Host " Configuration : $Configuration" -ForegroundColor Gray
Write-Host " Project Root : $ProjectRoot" -ForegroundColor Gray
Write-Host ""
Set-Location $ProjectRoot
# ── On kosullar ──────────────────────────────────────────────
Write-Step "On kosullar kontrol ediliyor..."
# Flutter
if (-not (Get-Command flutter -ErrorAction SilentlyContinue)) {
Write-Err "Flutter SDK bulunamadi. PATH'e ekleyin veya https://docs.flutter.dev/get-started/install/windows adresinden kurun."
}
Write-Ok "Flutter: $(flutter --version 2>&1 | Select-String 'Flutter' | Select-Object -First 1)"
# Visual Studio / MSVC
$vswhere = "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe"
if (Test-Path $vswhere) {
$vsInstall = & $vswhere -latest -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath 2>$null
if ($vsInstall) {
Write-Ok "Visual Studio C++ tools bulundu: $vsInstall"
} else {
Write-Warn "Visual Studio C++ tools bulunamadi. 'Desktop development with C++' workload'unu kurun."
}
} else {
Write-Warn "vswhere bulunamadi. Visual Studio Build Tools kurulu olabilir mi kontrol edin."
}
# CMake
if (Get-Command cmake -ErrorAction SilentlyContinue) {
Write-Ok "CMake: $(cmake --version 2>&1 | Select-Object -First 1)"
} else {
Write-Warn "CMake PATH'te bulunamadi. Flutter icin genelde gerekli degildir."
}
# Inno Setup
if (-not $SkipInno) {
$isccPaths = @(
"C:\Program Files (x86)\Inno Setup 6\ISCC.exe",
"C:\Program Files\Inno Setup 6\ISCC.exe",
"C:\Users\$env:USERNAME\AppData\Local\Programs\Inno Setup 6\ISCC.exe"
)
$iscc = $isccPaths | Where-Object { Test-Path $_ } | Select-Object -First 1
if ($iscc) {
Write-Ok "Inno Setup: $iscc"
} else {
Write-Err "Inno Setup 6 bulunamadi. http://www.jrsoftware.org/isdl.php adresinden kurun."
}
}
# ── Adim 1: flutter clean (opsiyonel) ──────────────────────
if ($Clean) {
Write-Step "Adim 1/3: flutter clean"
flutter clean 2>&1 | Out-Null
Write-Ok "Clean tamamlandi"
}
# ── Adim 2: flutter pub get ────────────────────────────────
Write-Step "Adim 2/3: flutter pub get"
$result = flutter pub get 2>&1
if ($LASTEXITCODE -ne 0) {
Write-Host $result -ForegroundColor Red
Write-Err "flutter pub get basarisiz!"
}
Write-Ok "Bağımlilikler indirildi"
# ── Adim 3: flutter build windows ──────────────────────────
Write-Step "Adim 3/3: flutter build windows --$Configuration"
$buildArgs = @('build', 'windows', "--$Configuration")
$result = flutter @buildArgs 2>&1
if ($LASTEXITCODE -ne 0) {
Write-Host $result -ForegroundColor Red
Write-Err "Flutter build basarisiz! flutter doctor ile sorunlari kontrol edin."
}
$buildOutput = Join-Path $ProjectRoot "build\windows\x64\runner\$Configuration"
if (-not (Test-Path (Join-Path $buildOutput "imajviewer.exe"))) {
Write-Err "Build cikti dosyasi bulunamadi: $buildOutput\imajviewer.exe"
}
Write-Ok "Build tamamlandi: $buildOutput"
# ── Adim 4: Inno Setup (opsiyonel) ────────────────────────
if (-not $SkipInno) {
Write-Step "Inno Setup ile installer olusturuluyor..."
$installerScript = Join-Path $ProjectRoot "windows\installer.iss"
if (-not (Test-Path $installerScript)) {
Write-Err "Installer scripti bulunamadi: $installerScript"
}
$distDir = Join-Path $ProjectRoot "dist"
New-Item -ItemType Directory -Force -Path $distDir | Out-Null
& $iscc $installerScript 2>&1
if ($LASTEXITCODE -ne 0) {
Write-Err "Inno Setup derleme basarisiz!"
}
$setupExe = Get-ChildItem -Path $distDir -Filter "imajviewer_setup_*.exe" | Select-Object -First 1
if ($setupExe) {
$sizeMB = [math]::Round($setupExe.Length / 1MB, 2)
Write-Ok "Installer olusturuldu: $($setupExe.FullName) ($sizeMB MB)"
} else {
Write-Warn "Installer dosyasi dist/ dizininde bulunamadi."
}
}
# ── Tamamlandı ──────────────────────────────────────────────
Write-Host ""
Write-Host ("=" * 60) -ForegroundColor Green
Write-Host " Build tamamlandi!" -ForegroundColor Green
Write-Host " Cikti: $buildOutput" -ForegroundColor Green
if (-not $SkipInno) {
Write-Host " Installer: dist\imajviewer_setup_*.exe" -ForegroundColor Green
}
Write-Host ("=" * 60) -ForegroundColor Green
Write-Host ""