diff --git a/installer/setup.ps1 b/installer/setup.ps1
index e7449d4..61440b3 100644
--- a/installer/setup.ps1
+++ b/installer/setup.ps1
@@ -4,9 +4,36 @@ param(
[string]$ServerUrl,
[string]$InstallDir
)
-$cfgDir = Join-Path $env:ProgramData "vantage"
-New-Item -ItemType Directory -Force -Path $cfgDir | Out-Null
-$cfg = @"
+
+$ErrorActionPreference = "Stop"
+$logDir = Join-Path $env:ProgramData "vantage"
+New-Item -ItemType Directory -Force -Path $logDir | Out-Null
+$log = Join-Path $logDir "install.log"
+
+function Write-Log($msg) {
+ $line = "{0} {1}" -f (Get-Date -Format "s"), $msg
+ Add-Content -Path $log -Value $line
+}
+
+# Fail native-exe (nssm) calls loudly: check $LASTEXITCODE after each call
+function Invoke-Native {
+ param([string]$File, [string[]]$Args)
+ Write-Log ("RUN: {0} {1}" -f $File, ($Args -join " "))
+ $out = & $File @Args 2>&1
+ if ($out) { Write-Log ("OUT: {0}" -f ($out -join "`n")) }
+ if ($LASTEXITCODE -ne 0) {
+ throw ("{0} exited {1}" -f $File, $LASTEXITCODE)
+ }
+}
+
+try {
+ Write-Log "=== setup start ==="
+ Write-Log ("ServerId={0} ServerUrl={1} InstallDir={2}" -f $ServerId, $ServerUrl, $InstallDir)
+
+ $cfgDir = Join-Path $env:ProgramData "vantage"
+ New-Item -ItemType Directory -Force -Path $cfgDir | Out-Null
+
+ $cfg = @"
server_url: "$ServerUrl"
server_id: "$ServerId"
pre_reg_token: "$Token"
@@ -14,12 +41,29 @@ agent_token: ""
poll_interval: 30s
tls: true
"@
-Set-Content -Path (Join-Path $cfgDir "config.yaml") -Value $cfg -Encoding utf8
-# Lock down ACL: SYSTEM + Administrators only
-icacls (Join-Path $cfgDir "config.yaml") /inheritance:r /grant:r "SYSTEM:F" "Administrators:F" | Out-Null
+ $cfgPath = Join-Path $cfgDir "config.yaml"
+ Set-Content -Path $cfgPath -Value $cfg -Encoding utf8
+ Write-Log "wrote $cfgPath"
-$nssm = Join-Path $InstallDir "nssm.exe"
-$exe = Join-Path $InstallDir "vantage-agent.exe"
-& $nssm install VantageAgent $exe
-& $nssm set VantageAgent Start SERVICE_AUTO_START
-& $nssm start VantageAgent
+ # Lock down ACL: SYSTEM + Administrators only
+ Invoke-Native -File "icacls" -Args @($cfgPath, "/inheritance:r", "/grant:r", "SYSTEM:F", "Administrators:F")
+
+ if (-not $InstallDir) { $InstallDir = $PSScriptRoot }
+ $nssm = Join-Path $InstallDir "nssm.exe"
+ $exe = Join-Path $InstallDir "vantage-agent.exe"
+
+ if (-not (Test-Path $nssm)) { throw "nssm.exe not found at $nssm" }
+ if (-not (Test-Path $exe)) { throw "vantage-agent.exe not found at $exe" }
+
+ Invoke-Native -File $nssm -Args @("install", "VantageAgent", $exe)
+ Invoke-Native -File $nssm -Args @("set", "VantageAgent", "Start", "SERVICE_AUTO_START")
+ Invoke-Native -File $nssm -Args @("start", "VantageAgent")
+
+ Write-Log "=== setup ok ==="
+ exit 0
+}
+catch {
+ Write-Log ("ERROR: {0}" -f $_.Exception.Message)
+ Write-Log ($_.ScriptStackTrace)
+ exit 1
+}
diff --git a/installer/vantage-agent.wxs b/installer/vantage-agent.wxs
index e810429..715dfcd 100644
--- a/installer/vantage-agent.wxs
+++ b/installer/vantage-agent.wxs
@@ -54,7 +54,7 @@
actual Windows machine before this is trusted in production. -->
+ Value='cmd.exe /c powershell -ExecutionPolicy Bypass -File "[INSTALLDIR]setup.ps1" -ServerId "[SERVERID]" -Token "[TOKEN]" -ServerUrl "[SERVERURL]"' />