[packaging] new helper scripts
This commit is contained in:
79
packaging/windows/dev_helpers/build_angular.ps1
Normal file
79
packaging/windows/dev_helpers/build_angular.ps1
Normal file
@@ -0,0 +1,79 @@
|
||||
# This script builds the Angular project for the Portmaster application and packages it into a zip file.
|
||||
# The script assumes that all necessary dependencies are installed and available.
|
||||
# Output file: dist/portmaster.zip
|
||||
|
||||
[CmdletBinding()]
|
||||
param (
|
||||
[Parameter(Mandatory=$false)]
|
||||
[Alias("d")]
|
||||
[switch]$Development,
|
||||
|
||||
[Parameter(Mandatory=$false)]
|
||||
[Alias("i")]
|
||||
[switch]$Interactive
|
||||
)
|
||||
|
||||
# Store original directory and find project root
|
||||
$originalDir = Get-Location
|
||||
$scriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path
|
||||
$projectRoot = (Get-Item $scriptDir).Parent.Parent.Parent.FullName
|
||||
|
||||
try {
|
||||
# Create output directory
|
||||
$outputDir = Join-Path $scriptDir "dist"
|
||||
New-Item -ItemType Directory -Path $outputDir -Force | Out-Null
|
||||
|
||||
# Navigate to Angular project
|
||||
Set-Location (Join-Path $projectRoot "desktop\angular")
|
||||
|
||||
# npm install - always run in non-interactive mode, ask in interactive mode
|
||||
if (!$Interactive -or (Read-Host "Run 'npm install'? (Y/N, default: Y)") -notmatch '^[Nn]$') {
|
||||
npm install
|
||||
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
|
||||
}
|
||||
|
||||
# build libs - always run in non-interactive mode, ask in interactive mode
|
||||
if (!$Interactive -or (Read-Host "Build shared libraries? (Y/N, default: Y)") -notmatch '^[Nn]$') {
|
||||
if ($Development) {
|
||||
Write-Host "Building shared libraries in development mode" -ForegroundColor Yellow
|
||||
npm run build-libs:dev
|
||||
} else {
|
||||
Write-Host "Building shared libraries in production mode" -ForegroundColor Yellow
|
||||
npm run build-libs
|
||||
}
|
||||
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
|
||||
}
|
||||
|
||||
# Build Angular project
|
||||
if ($Development) {
|
||||
Write-Host "Building Angular project in development mode" -ForegroundColor Yellow
|
||||
ng build --configuration development --base-href /ui/modules/portmaster/ portmaster
|
||||
} else {
|
||||
Write-Host "Building Angular project in production mode" -ForegroundColor Yellow
|
||||
ng build --configuration production --base-href /ui/modules/portmaster/ portmaster
|
||||
}
|
||||
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
|
||||
|
||||
# Create zip archive
|
||||
Write-Host "Creating zip archive" -ForegroundColor Yellow
|
||||
Set-Location dist
|
||||
$destinationZip = Join-Path $outputDir "portmaster.zip"
|
||||
if ($PSVersionTable.PSVersion.Major -ge 5) {
|
||||
# Option 1: Use .NET Framework directly (faster than Compress-Archive)
|
||||
Write-Host "Using System.IO.Compression for faster archiving" -ForegroundColor Yellow
|
||||
if (Test-Path $destinationZip) { Remove-Item $destinationZip -Force } # Remove existing zip if it exists
|
||||
Add-Type -AssemblyName System.IO.Compression.FileSystem
|
||||
$compressionLevel = [System.IO.Compression.CompressionLevel]::Optimal
|
||||
[System.IO.Compression.ZipFile]::CreateFromDirectory((Get-Location), $destinationZip, $compressionLevel, $false)
|
||||
}
|
||||
else {
|
||||
# Fall back to Compress-Archive
|
||||
Compress-Archive -Path * -DestinationPath $destinationZip -Force
|
||||
}
|
||||
|
||||
Write-Host "Build completed successfully: $(Join-Path $outputDir "portmaster.zip")" -ForegroundColor Green
|
||||
}
|
||||
finally {
|
||||
# Return to original directory - this will execute even if Ctrl+C is pressed
|
||||
Set-Location $originalDir
|
||||
}
|
||||
38
packaging/windows/dev_helpers/build_tauri.ps1
Normal file
38
packaging/windows/dev_helpers/build_tauri.ps1
Normal file
@@ -0,0 +1,38 @@
|
||||
# This script builds the Tauri application for Portmaster on Windows.
|
||||
# It optionally builds the required Angular tauri-builtin project first.
|
||||
# The script assumes that all necessary dependencies (Node.js, Rust, etc.) are installed.
|
||||
# Output file: dist/portmaster.exe
|
||||
|
||||
# Store original directory and find project root
|
||||
$originalDir = Get-Location
|
||||
$scriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path
|
||||
$projectRoot = (Get-Item $scriptDir).Parent.Parent.Parent.FullName
|
||||
|
||||
# Create output directory
|
||||
$outputDir = Join-Path $scriptDir "dist"
|
||||
New-Item -ItemType Directory -Path $outputDir -Force | Out-Null
|
||||
|
||||
# Ask if user wants to build the Angular tauri-builtin project
|
||||
if ((Read-Host "Build Angular tauri-builtin project? (Y/N, default: Y)") -notmatch '^[Nn]$') {
|
||||
# Navigate to Angular project
|
||||
Set-Location (Join-Path $projectRoot "desktop\angular")
|
||||
|
||||
# Build tauri-builtin project
|
||||
ng build --configuration production --base-href / tauri-builtin
|
||||
if ($LASTEXITCODE -ne 0) { Set-Location $originalDir; exit $LASTEXITCODE }
|
||||
}
|
||||
|
||||
# Navigate to Tauri project directory
|
||||
Set-Location (Join-Path $projectRoot "desktop\tauri\src-tauri")
|
||||
|
||||
# Build Tauri project for Windows
|
||||
cargo tauri build --no-bundle
|
||||
if ($LASTEXITCODE -ne 0) { Set-Location $originalDir; exit $LASTEXITCODE }
|
||||
|
||||
# Copy the output files to the script's dist directory
|
||||
$tauriOutput = Join-Path (Get-Location) "target\release"
|
||||
Copy-Item -Path "$tauriOutput\portmaster.exe" -Destination $outputDir -Force
|
||||
|
||||
# Return to original directory
|
||||
Set-Location $originalDir
|
||||
Write-Host "Build completed successfully: $outputDir\portmaster.exe" -ForegroundColor Green
|
||||
Reference in New Issue
Block a user