jackailocal / installer /windows /Build-Installer.ps1
jackboy70's picture
Deploy: accurate lite-builder note
f25362a
Raw
History Blame Contribute Delete
2.14 kB
[CmdletBinding()]
param(
[string]$PayloadRoot = "",
[string]$OutputDir = "",
[string]$IsccPath = ""
)
$ErrorActionPreference = "Stop"
$Root = (Resolve-Path (Join-Path $PSScriptRoot "..\..")).Path
if (-not $PayloadRoot) { $PayloadRoot = $Root }
$PayloadRoot = (Resolve-Path $PayloadRoot).Path
if (-not $OutputDir) { $OutputDir = Join-Path $Root "dist\installer" }
New-Item -ItemType Directory -Force -Path $OutputDir | Out-Null
$OutputDir = (Resolve-Path $OutputDir).Path
function Require-File([string]$RelativePath) {
$path = Join-Path $PayloadRoot $RelativePath
if (!(Test-Path $path -PathType Leaf)) { throw "Required installer payload file is missing: $path" }
}
Require-File "bin\jackailocald.exe"
Require-File "backends\ollama\windows\ollama.exe"
Require-File "webui\index.html"
Require-File "webui\app-v15.js"
Require-File "config\jackailocal.windows.toml"
Require-File "START-DESKTOP.cmd"
$modelFiles = @(Get-ChildItem -Path (Join-Path $PayloadRoot "models\ollama") -Recurse -File -ErrorAction SilentlyContinue |
Where-Object { $_.Name -notlike "*.txt" })
if ($modelFiles.Count -eq 0) {
throw "No real Ollama model files were found under models\ollama. Preload at least one model before building the installer."
}
if (-not $IsccPath) {
$candidates = @(
(Join-Path ${env:ProgramFiles(x86)} "Inno Setup 6\ISCC.exe"),
(Join-Path $env:ProgramFiles "Inno Setup 6\ISCC.exe")
)
$IsccPath = $candidates | Where-Object { $_ -and (Test-Path $_) } | Select-Object -First 1
}
if (-not $IsccPath -or !(Test-Path $IsccPath)) {
throw "Inno Setup 6 compiler was not found. Install Inno Setup or pass -IsccPath."
}
$iss = Join-Path $PSScriptRoot "JackAILocal.iss"
& $IsccPath "/DPayloadRoot=$PayloadRoot" "/DOutputDir=$OutputDir" $iss
if ($LASTEXITCODE -ne 0) { throw "Inno Setup failed with exit code $LASTEXITCODE." }
$installer = Join-Path $OutputDir "JackAILocalSetup.exe"
if (!(Test-Path $installer)) { throw "Installer was not created: $installer" }
& (Join-Path $Root "factory\powershell\Sign-Executables.ps1") -Path $installer
Write-Host "Real Windows installer created: $installer" -ForegroundColor Green