param( [string]$Configuration = "Release" ) $ErrorActionPreference = "Stop" $repoRoot = Split-Path -Parent $PSScriptRoot $artifactsRoot = Join-Path $repoRoot "artifacts" $zipPath = Join-Path $artifactsRoot "OCSentinelClient-win-x64.zip" $bootstrapperRoot = Join-Path $repoRoot "installer\OCSentinelBootstrapper" $payloadPath = Join-Path $bootstrapperRoot "payload.zip" $projectPath = Join-Path $bootstrapperRoot "OCSentinelBootstrapper.csproj" $publishRoot = Join-Path $artifactsRoot "bootstrapper-publish\win-x64" $outputExe = Join-Path $artifactsRoot "OCSentinelSetup.exe" if (-not (Test-Path $zipPath)) { & powershell.exe -ExecutionPolicy Bypass -File (Join-Path $repoRoot "build\build-client-package.ps1") -Configuration $Configuration if ($LASTEXITCODE -ne 0) { throw "build-client-package.ps1 failed" } } Copy-Item -Path $zipPath -Destination $payloadPath -Force if (Test-Path $publishRoot) { Remove-Item -LiteralPath $publishRoot -Recurse -Force } if (Test-Path $outputExe) { Remove-Item -LiteralPath $outputExe -Force } New-Item -ItemType Directory -Force -Path $publishRoot | Out-Null & dotnet publish $projectPath ` -c $Configuration ` -r win-x64 ` --self-contained true ` -p:PublishSingleFile=true ` -p:EnableCompressionInSingleFile=true ` -p:IncludeNativeLibrariesForSelfExtract=true ` -o $publishRoot if ($LASTEXITCODE -ne 0) { throw "dotnet publish failed for bootstrapper" } Copy-Item -Path (Join-Path $publishRoot "OCSentinelBootstrapper.exe") -Destination $outputExe -Force Write-Host "OfficeCom Sentinel setup executable created at $outputExe"