NetDesk 1.5.0 — source release
This commit is contained in:
commit
40318aafdd
227 files changed
+80798
No files matched your search
@@ -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=..."
|
||||
Reference in new issue
Block a user