NetDesk 1.5.0 — source release

This commit is contained in:
NetDesk committed 2026-10-18 02:02:46 +00:00
commit 40318aafdd
227 files changed
+80798

No files matched your search

+73
View File
@@ -0,0 +1,73 @@
<#
NetDesk by Akronlogic -- MSI build script (WiX v4).
Produces dist\NetDesk.msi for enterprise / unattended deployment (GPO / SCCM /
Intune). The MSI installs the portable payload and runs `NetDesk.exe --config`
to write config.json non-interactively from the deployment properties:
msiexec /i NetDesk.msi /qn SERVER="wss://relay.corp/ws" REGKEY="CORP1" `
PASSWORD="Sup3rSecret!" HOSTID="123456789"
Prerequisite (one time) -- the WiX toolset, which needs the .NET SDK:
winget install Microsoft.DotNet.SDK.8 # or any current .NET SDK
dotnet tool install --global wix
NOTE: this box has only the .NET RUNTIME (no SDK), so WiX cannot be installed
here and the MSI has not been built/verified in this environment. The
unattended `--config` injection the MSI drives IS proven (viewer
config_cli_tests + a live `NetDesk.exe --config` run). Run this on a build box
that has WiX.
Usage:
powershell -ExecutionPolicy Bypass -File build-msi.ps1
powershell -ExecutionPolicy Bypass -File build-msi.ps1 -SkipBuild # reuse staged payload
#>
[CmdletBinding()]
param(
[string]$MingwBin = "C:\mingw-netdesk\mingw64\bin",
[switch]$SkipBuild,
[switch]$NoSign,
[string]$Thumbprint = "YOUR_CODE_SIGNING_CERT_THUMBPRINT"
)
$ErrorActionPreference = "Stop"
$PkgDir = $PSScriptRoot
$RootDir = Split-Path -Parent $PkgDir
$DistDir = Join-Path $PkgDir "dist"
$StageDir = Join-Path $DistDir "NetDesk-Portable"
$Wxs = Join-Path $PkgDir "netdesk.wxs"
$MsiOut = Join-Path $DistDir "NetDesk.msi"
$SignPs1 = Join-Path $RootDir "certs\sign-release.ps1"
Write-Host "=== NetDesk MSI build (Akronlogic) ===" -ForegroundColor Cyan
# 1. stage the signed portable payload (NetDesk.exe + runtime DLLs).
$portableArgs = @{ MingwBin = $MingwBin }
if ($SkipBuild) { $portableArgs.SkipBuild = $true }
& (Join-Path $PkgDir "build-portable.ps1") @portableArgs
if (-not (Test-Path (Join-Path $StageDir "NetDesk.exe"))) { throw "payload missing: $StageDir" }
# 2. locate WiX.
$wix = Get-Command wix -ErrorAction SilentlyContinue
if (-not $wix) {
throw "WiX toolset not found. Install it (needs the .NET SDK): dotnet tool install --global wix"
}
# 3. build the MSI, passing the payload dir as the $(Payload) preprocessor var.
New-Item -ItemType Directory -Force -Path $DistDir | Out-Null
& $wix.Source build $Wxs -d "Payload=$StageDir" -arch x64 -o $MsiOut
if ($LASTEXITCODE) { throw "wix build failed (exit $LASTEXITCODE)" }
Write-Host " built: $MsiOut"
# 4. sign the MSI with the same cert as the portable / installer.
if (-not $NoSign -and (Test-Path $SignPs1)) {
$signtool = Get-Command signtool.exe -ErrorAction SilentlyContinue
if ($signtool) {
& $signtool.Source sign /sha1 $Thumbprint /fd SHA256 /tr "http://timestamp.sectigo.com" /td SHA256 "$MsiOut"
if ($LASTEXITCODE) { Write-Host " signtool returned $LASTEXITCODE (continuing)" -ForegroundColor DarkYellow }
else { Write-Host " signed: $MsiOut" -ForegroundColor Green }
}
}
Write-Host "`nMSI build complete -> $MsiOut" -ForegroundColor Green
Write-Host "Deploy: msiexec /i NetDesk.msi /qn SERVER=... REGKEY=... PASSWORD=... HOSTID=..."