41 lines
2.5 KiB
PowerShell
41 lines
2.5 KiB
PowerShell
$ErrorActionPreference = 'Stop'
|
|
$compiler = 'C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe'
|
|
$project = Split-Path -Parent $MyInvocation.MyCommand.Path
|
|
$program = Join-Path $project 'Program.cs'
|
|
$tests = Join-Path $project 'Tests.cs'
|
|
$installerSource = Join-Path $project 'Installer.cs'
|
|
$uninstallerSource = Join-Path $project 'Uninstaller.cs'
|
|
$icon = Join-Path $project 'PANDA.ico'
|
|
$testExe = Join-Path $project 'PANDA.Tests.exe'
|
|
$appExe = Join-Path $project 'PANDA-Portable.exe'
|
|
$uninstallerExe = Join-Path $project 'PANDA-Uninstall.Payload.exe'
|
|
$setupExe = Join-Path $project 'PANDA-Setup.exe'
|
|
$iconArgument = "/win32icon:$icon"
|
|
|
|
if (-not (Test-Path -LiteralPath $icon)) { throw 'PANDA.ico fehlt.' }
|
|
|
|
& $compiler /nologo /target:exe /main:Panda.Tests /out:$testExe /reference:System.dll /reference:System.Core.dll /reference:System.Drawing.dll /reference:System.Windows.Forms.dll $program $tests
|
|
if ($LASTEXITCODE -ne 0) { throw 'Test-Build fehlgeschlagen.' }
|
|
|
|
& $testExe
|
|
if ($LASTEXITCODE -ne 0) { throw 'Tests fehlgeschlagen.' }
|
|
|
|
& $compiler /nologo /target:winexe /main:Panda.Program /optimize+ /platform:anycpu /out:$appExe $iconArgument /reference:System.dll /reference:System.Core.dll /reference:System.Drawing.dll /reference:System.Windows.Forms.dll $program
|
|
if ($LASTEXITCODE -ne 0) { throw 'Programm-Build fehlgeschlagen.' }
|
|
|
|
& $compiler /nologo /target:winexe /main:PandaUninstall.Program /optimize+ /platform:anycpu /out:$uninstallerExe $iconArgument /reference:System.dll /reference:System.Core.dll /reference:System.Windows.Forms.dll $uninstallerSource
|
|
if ($LASTEXITCODE -ne 0) { throw 'Uninstaller-Build fehlgeschlagen.' }
|
|
|
|
$appResource = "/resource:$appExe,PANDA.Application.exe"
|
|
$uninstallerResource = "/resource:$uninstallerExe,PANDA.Uninstaller.exe"
|
|
& $compiler /nologo /target:winexe /main:PandaSetup.Program /optimize+ /platform:anycpu /out:$setupExe $iconArgument /reference:System.dll /reference:System.Core.dll /reference:System.Drawing.dll /reference:System.Windows.Forms.dll $appResource $uninstallerResource $installerSource
|
|
if ($LASTEXITCODE -ne 0) { throw 'Installer-Build fehlgeschlagen.' }
|
|
|
|
$verifyProcess = Start-Process -FilePath $setupExe -ArgumentList '--verify' -WindowStyle Hidden -Wait -PassThru
|
|
if ($verifyProcess.ExitCode -ne 0) { throw 'Installer-Payload-Prüfung fehlgeschlagen.' }
|
|
|
|
Remove-Item -LiteralPath $testExe -Force
|
|
Remove-Item -LiteralPath $uninstallerExe -Force
|
|
Write-Host "Portable Einzeldatei erstellt: $appExe"
|
|
Write-Host "Installer mit Uninstaller erstellt: $setupExe"
|