63 lines
2.4 KiB
PowerShell
63 lines
2.4 KiB
PowerShell
|
|
# ═══════════════════════════════════════════════════════════════════════════
|
||
|
|
# AUTARCH - Windows MSI Installer Builder
|
||
|
|
#
|
||
|
|
# Creates a Windows .msi installer using Python's built-in msilib.
|
||
|
|
# Packages the PyInstaller bundle (dist\bin\AUTARCH\) into an MSI.
|
||
|
|
# Output: dist\bin\AUTARCH-1.3-win64.msi
|
||
|
|
#
|
||
|
|
# Usage:
|
||
|
|
# powershell -ExecutionPolicy Bypass -File scripts\build-msi.ps1
|
||
|
|
#
|
||
|
|
# Prerequisites:
|
||
|
|
# - Python 3.10+ (msilib is a Windows standard library module)
|
||
|
|
# - dist\bin\AUTARCH\ must exist (run build-exe.ps1 first)
|
||
|
|
# ===============================================================================
|
||
|
|
|
||
|
|
param(
|
||
|
|
[string]$Python = "python"
|
||
|
|
)
|
||
|
|
|
||
|
|
$ErrorActionPreference = "Stop"
|
||
|
|
$AppDir = Split-Path -Parent $PSScriptRoot
|
||
|
|
|
||
|
|
Write-Host ""
|
||
|
|
Write-Host "===============================================" -ForegroundColor Cyan
|
||
|
|
Write-Host " AUTARCH .msi Builder (msilib)" -ForegroundColor Cyan
|
||
|
|
Write-Host "===============================================" -ForegroundColor Cyan
|
||
|
|
Write-Host ""
|
||
|
|
|
||
|
|
$BundleDir = Join-Path $AppDir "dist\bin\AUTARCH"
|
||
|
|
if (-not (Test-Path (Join-Path $BundleDir "AUTARCH.exe"))) {
|
||
|
|
Write-Host "ERROR: dist\bin\AUTARCH\AUTARCH.exe not found." -ForegroundColor Red
|
||
|
|
Write-Host " Run build-exe.ps1 first to create the bundle." -ForegroundColor Yellow
|
||
|
|
exit 1
|
||
|
|
}
|
||
|
|
|
||
|
|
Set-Location $AppDir
|
||
|
|
Write-Host "Building MSI from dist\bin\AUTARCH\ bundle..." -ForegroundColor Yellow
|
||
|
|
Write-Host ""
|
||
|
|
|
||
|
|
& $Python (Join-Path $AppDir "scripts\make_msi.py")
|
||
|
|
|
||
|
|
if ($LASTEXITCODE -ne 0) {
|
||
|
|
Write-Host ""
|
||
|
|
Write-Host "ERROR: MSI build failed (exit code $LASTEXITCODE)" -ForegroundColor Red
|
||
|
|
exit $LASTEXITCODE
|
||
|
|
}
|
||
|
|
|
||
|
|
$msiFiles = Get-ChildItem (Join-Path $AppDir "dist\bin") -Filter "*.msi" -ErrorAction SilentlyContinue
|
||
|
|
|
||
|
|
Write-Host ""
|
||
|
|
Write-Host "===============================================" -ForegroundColor Green
|
||
|
|
Write-Host " MSI build complete!" -ForegroundColor Green
|
||
|
|
Write-Host "===============================================" -ForegroundColor Green
|
||
|
|
Write-Host ""
|
||
|
|
foreach ($msi in $msiFiles) {
|
||
|
|
$sizeMB = [math]::Round($msi.Length / 1MB, 1)
|
||
|
|
Write-Host " Output: $($msi.FullName) ($sizeMB MB)" -ForegroundColor White
|
||
|
|
}
|
||
|
|
Write-Host ""
|
||
|
|
Write-Host " Install: Double-click the .msi file" -ForegroundColor Cyan
|
||
|
|
Write-Host " Or: msiexec /i AUTARCH-1.3-win64.msi" -ForegroundColor Cyan
|
||
|
|
Write-Host ""
|