feat: Windows development tooling — build, install, uninstall scripts + setup guide
Build & Release / build-linux (push) Has been cancelled
Build & Release / build-windows (push) Has been cancelled
Build & Release / create-release (push) Has been cancelled

- 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
This commit is contained in:
Alhan committed 2026-08-10 23:32:08 +03:00
1 parent 714c4c998e
commit 88500ab800
5 files changed
+775

No files matched your search

+165
View File
@@ -0,0 +1,165 @@
#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 ""