Aegisub/tools/win-installer-setup.ps1
arch1t3cht 883a1b2a73 installer and ci: Throw more errors on failure
This makes it easier to notice when installer generation failed.
2023-03-24 20:30:17 +01:00

101 lines
No EOL
3.2 KiB
PowerShell

#!/usr/bin/env powershell
param (
[Parameter(Position = 0)]
[string]$BuildRoot,
[Parameter(Position = 1)]
[string]$SourceRoot
)
$InstallerDir = Join-Path $SourceRoot "packages\win_installer" | Resolve-Path
$DepsDir = Join-Path $BuildRoot "installer-deps"
if (!(Test-Path $DepsDir)) {
New-Item -ItemType Directory -Path $DepsDir
}
$Env:BUILD_ROOT = $BuildRoot
$Env:SOURCE_ROOT = $SourceRoot
Set-Location $DepsDir
$GitHeaders = @{}
if (Test-Path 'Env:GITHUB_TOKEN') {
$GitHeaders = @{ 'Authorization' = 'Bearer ' + $Env:GITHUB_TOKEN }
}
# DepCtrl
if (!(Test-Path DependencyControl)) {
git clone https://github.com/TypesettingTools/DependencyControl.git
Set-Location DependencyControl
git checkout v0.6.3-alpha
Set-Location $DepsDir
}
# YUtils
if (!(Test-Path YUtils)) {
git clone https://github.com/TypesettingTools/YUtils.git
}
# luajson
if (!(Test-Path luajson)) {
git clone https://github.com/harningt/luajson.git
}
# Avisynth
if (!(Test-Path AviSynthPlus64)) {
$avsReleases = Invoke-WebRequest "https://api.github.com/repos/AviSynth/AviSynthPlus/releases/latest" -Headers $GitHeaders -UseBasicParsing | ConvertFrom-Json
$avsUrl = $avsReleases.assets[0].browser_download_url
Invoke-WebRequest $avsUrl -OutFile AviSynthPlus.7z -UseBasicParsing
7z x AviSynthPlus.7z
Rename-Item (Get-ChildItem -Filter "AviSynthPlus_*" -Directory) AviSynthPlus64
Remove-Item AviSynthPlus.7z
}
# VSFilter
if (!(Test-Path VSFilter)) {
$vsFilterDir = New-Item -ItemType Directory VSFilter
Set-Location $vsFilterDir
$vsFilterReleases = Invoke-WebRequest "https://api.github.com/repos/pinterf/xy-VSFilter/releases/latest" -Headers $GitHeaders -UseBasicParsing | ConvertFrom-Json
$vsFilterUrl = $vsFilterReleases.assets[0].browser_download_url
Invoke-WebRequest $vsFilterUrl -OutFile VSFilter.7z -UseBasicParsing
7z x VSFilter.7z
Remove-Item VSFilter.7z
Set-Location $DepsDir
}
# ffi-experiments
if (!(Test-Path ffi-experiments)) {
Get-Command "moonc" # check to ensure Moonscript is present
git clone https://github.com/TypesettingTools/ffi-experiments.git
Set-Location ffi-experiments
meson build -Ddefault_library=static
if(!$?) { Exit $LASTEXITCODE }
meson compile -C build
if(!$?) { Exit $LASTEXITCODE }
Set-Location $DepsDir
}
# VC++ redistributable
if (!(Test-Path VC_redist)) {
$redistDir = New-Item -ItemType Directory VC_redist
Invoke-WebRequest https://aka.ms/vs/17/release/VC_redist.x64.exe -OutFile "$redistDir\VC_redist.x64.exe" -UseBasicParsing
}
# dictionaries
if (!(Test-Path dictionaries)) {
New-Item -ItemType Directory dictionaries
[Net.ServicePointManager]::SecurityProtocol = "Tls12" # Needed since otherwise downloading fails in some places like on the GitHub CI: https://stackoverflow.com/a/66614041/4730656
Invoke-WebRequest https://downloads.sourceforge.net/project/openofficeorg.mirror/contrib/dictionaries/en_US.zip -UserAgent "Wget" -OutFile en_US.zip -UseBasicParsing
Expand-Archive -LiteralPath en_US.zip -DestinationPath dictionaries
Remove-Item en_US.zip
}
# localization
Set-Location $BuildRoot
meson compile aegisub-gmo
if(!$?) { Exit $LASTEXITCODE }
# Invoke InnoSetup
$IssUrl = Join-Path $InstallerDir "aegisub_depctrl.iss"
iscc $IssUrl
if(!$?) { Exit $LASTEXITCODE }