Files
nfc-actions/build-release.ps1
Amal Graafstra 37309f30e1 Add release build configuration and MSI installer
- Configure self-contained, single-file release build
- Add version and company metadata to project
- Fix Assembly.Location for single-file compatibility (use AppContext.BaseDirectory)
- Add Resources folder copy to publish output
- Create WiX installer project with Product.wxs
- Configure auto-start via HKCU Run registry key
- Add build-release.ps1 PowerShell script for automated builds
- MSI installer installs to %LOCALAPPDATA%\DangerousThings\NFC Actions
- Creates Start Menu shortcut
- Automatically starts application on user login

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-06 23:21:14 -08:00

113 lines
4.0 KiB
PowerShell

# NFC Actions Release Build Script
# This script builds the release version and optionally creates an installer
param(
[switch]$SkipBuild = $false,
[switch]$BuildInstaller = $true
)
$ErrorActionPreference = "Stop"
$scriptPath = Split-Path -Parent $MyInvocation.MyCommand.Path
$projectPath = Join-Path $scriptPath "NfcActions\NfcActions.csproj"
$publishPath = Join-Path $scriptPath "NfcActions\bin\Release\net7.0-windows\win-x64\publish"
$installerPath = Join-Path $scriptPath "Installer"
Write-Host "=== NFC Actions Release Build ===" -ForegroundColor Cyan
Write-Host ""
# Step 1: Build and publish the application
if (-not $SkipBuild) {
Write-Host "[1/4] Cleaning previous builds..." -ForegroundColor Yellow
dotnet clean $projectPath -c Release -v quiet
Write-Host "[2/4] Building release (self-contained, single-file)..." -ForegroundColor Yellow
dotnet publish $projectPath -c Release -r win-x64 --self-contained true /p:PublishSingleFile=true /p:IncludeNativeLibrariesForSelfExtract=true /p:PublishReadyToRun=true
if ($LASTEXITCODE -ne 0) {
Write-Host "Build failed!" -ForegroundColor Red
exit 1
}
Write-Host "Build completed successfully!" -ForegroundColor Green
Write-Host "Output: $publishPath" -ForegroundColor Gray
Write-Host ""
}
# Step 2: Check if WiX is available
if ($BuildInstaller) {
Write-Host "[3/4] Checking for WiX Toolset..." -ForegroundColor Yellow
$wixInstalled = $false
$candle = Get-Command candle.exe -ErrorAction SilentlyContinue
$light = Get-Command light.exe -ErrorAction SilentlyContinue
if ($candle -and $light) {
$wixInstalled = $true
Write-Host "WiX Toolset found!" -ForegroundColor Green
} else {
Write-Host "WiX Toolset not found in PATH" -ForegroundColor Yellow
# Check common installation paths
$wixPaths = @(
"C:\Program Files (x86)\WiX Toolset v3.11\bin",
"C:\Program Files (x86)\WiX Toolset v3.14\bin",
"C:\Program Files\WiX Toolset v3.11\bin",
"C:\Program Files\WiX Toolset v3.14\bin"
)
foreach ($path in $wixPaths) {
if (Test-Path (Join-Path $path "candle.exe")) {
$env:Path += ";$path"
$wixInstalled = $true
Write-Host "Found WiX at: $path" -ForegroundColor Green
break
}
}
}
if ($wixInstalled) {
Write-Host "[4/4] Building MSI installer..." -ForegroundColor Yellow
Push-Location $installerPath
# Run candle (compile)
& candle.exe Product.wxs -out obj\Product.wixobj
if ($LASTEXITCODE -ne 0) {
Pop-Location
Write-Host "Candle (WiX compile) failed!" -ForegroundColor Red
exit 1
}
# Run light (link)
& light.exe obj\Product.wixobj -out bin\NfcActions-Setup.msi -ext WixUIExtension
if ($LASTEXITCODE -ne 0) {
Pop-Location
Write-Host "Light (WiX link) failed!" -ForegroundColor Red
exit 1
}
Pop-Location
$msiPath = Join-Path $installerPath "bin\NfcActions-Setup.msi"
Write-Host ""
Write-Host "=== Build Complete ===" -ForegroundColor Green
Write-Host "MSI Installer: $msiPath" -ForegroundColor Cyan
} else {
Write-Host ""
Write-Host "WiX Toolset not found. Skipping MSI creation." -ForegroundColor Yellow
Write-Host "To build the MSI installer, install WiX Toolset from:" -ForegroundColor Yellow
Write-Host " https://github.com/wixtoolset/wix3/releases" -ForegroundColor Gray
Write-Host ""
Write-Host "=== Build Complete ===" -ForegroundColor Green
Write-Host "Executable: $publishPath\NfcActions.exe" -ForegroundColor Cyan
}
} else {
Write-Host "[3/4] Skipping installer build" -ForegroundColor Yellow
Write-Host ""
Write-Host "=== Build Complete ===" -ForegroundColor Green
Write-Host "Executable: $publishPath\NfcActions.exe" -ForegroundColor Cyan
}
Write-Host ""