Files
opencode_gesis/Build-GuiInstaller.ps1
2026-06-29 19:36:31 +02:00

85 lines
2.3 KiB
PowerShell

#Requires -Version 5.1
$ErrorActionPreference = "Stop"
$sourcePath = Join-Path $PSScriptRoot "GesisOpenCodeInstaller.cs"
$outputPath = Join-Path $PSScriptRoot "GESIS-OpenCode-Installer.exe"
$logoPath = Join-Path $PSScriptRoot "GESIS Logo Blau EN.jpg"
$signetPath = Join-Path $PSScriptRoot "GESIS Signet Blau_transp.png"
$iconPath = Join-Path $PSScriptRoot "GESIS-OpenCode-Installer.ico"
$manifestPath = Join-Path $PSScriptRoot "app.manifest"
$cscPath = Join-Path $env:WINDIR "Microsoft.NET\Framework64\v4.0.30319\csc.exe"
if (-not (Test-Path -LiteralPath $cscPath)) {
throw "Could not find the .NET Framework C# compiler at $cscPath"
}
if (-not (Test-Path -LiteralPath $logoPath)) {
throw "Could not find logo file: $logoPath"
}
if (-not (Test-Path -LiteralPath $signetPath)) {
throw "Could not find signet file: $signetPath"
}
if (-not (Test-Path -LiteralPath $manifestPath)) {
throw "Could not find application manifest: $manifestPath"
}
Add-Type -AssemblyName System.Drawing
$pngBytes = [System.IO.File]::ReadAllBytes($signetPath)
$image = [System.Drawing.Image]::FromFile($signetPath)
try {
$width = [Math]::Min($image.Width, 255)
$height = [Math]::Min($image.Height, 255)
}
finally {
$image.Dispose()
}
$stream = [System.IO.File]::Open($iconPath, [System.IO.FileMode]::Create)
try {
$writer = New-Object System.IO.BinaryWriter($stream)
$writer.Write([UInt16]0)
$writer.Write([UInt16]1)
$writer.Write([UInt16]1)
$writer.Write([Byte]$width)
$writer.Write([Byte]$height)
$writer.Write([Byte]0)
$writer.Write([Byte]0)
$writer.Write([UInt16]1)
$writer.Write([UInt16]32)
$writer.Write([UInt32]$pngBytes.Length)
$writer.Write([UInt32]22)
$writer.Write($pngBytes)
$writer.Flush()
}
finally {
$stream.Dispose()
}
$compilerArgs = @(
"/target:winexe",
"/platform:x64",
"/optimize+",
"/win32icon:$iconPath",
"/win32manifest:$manifestPath",
"/out:$outputPath",
"/resource:$logoPath,GesisLogo",
"/resource:$iconPath,GesisIcon",
"/reference:System.dll",
"/reference:System.Core.dll",
"/reference:System.Drawing.dll",
"/reference:System.Web.Extensions.dll",
"/reference:System.Windows.Forms.dll",
$sourcePath
)
& $cscPath $compilerArgs
if ($LASTEXITCODE -ne 0) {
throw "Compilation failed with exit code $LASTEXITCODE"
}
Write-Host "Built $outputPath"